                               Manual de FreeBSD

  Proyecto de Documentacion de FreeBSD

   Revision: 48821

   Copyright (c) 1995-2010 The FreeBSD Documentation Project

   La redistribucion y uso en fuente (SGML DocBook) y formatos "compilados"
   (SGML, HTML, PDF, PostScript, RTF y cualquier otro) con o sin
   modificacion, esta permitida siempre y cuando se cumplan las siguientes
   condiciones:

    1. La redistribucion del codigo fuente (SGML DocBook) debe contener esta
       informacion de copyright, esta lista de condiciones y el siguiente
       texto como las primeras lineas del fichero sin modificar.

    2. La redistribucion en formatos compilados (transformado a otros DTDs,
       convertidos a PDF, PostScript, RTF y otros formatos) debe reproducir
       el siguiente texto de copyright, esta lista de condiciones y el
       siguiente texto en la documentacion y/u otros materiales entregados
       con la distribucion.

  Importante:

   THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS
   IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
   THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION
   PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

   FreeBSD is a registered trademark of the FreeBSD Foundation.

   3Com and HomeConnect are registered trademarks of 3Com Corporation.

   3ware is a registered trademarks of 3ware Inc.

   ARM is a registered trademark of ARM Limited.

   Adaptec is a registered trademark of Adaptec, Inc.

   Adobe, Acrobat, Acrobat Reader, and PostScript are either registered
   trademarks or trademarks of Adobe Systems Incorporated in the United
   States and/or other countries.

   Apple, AirPort, FireWire, Mac, Macintosh, Mac OS, Quicktime, and TrueType
   are trademarks of Apple Computer, Inc., registered in the United States
   and other countries.

   Corel and WordPerfect are trademarks or registered trademarks of Corel
   Corporation and/or its subsidiaries in Canada, the United States and/or
   other countries.

   Sound Blaster is a trademark of Creative Technology Ltd. in the United
   States and/or other countries.

   CVSup is a registered trademark of John D. Polstra.

   Heidelberg, Helvetica, Palatino, and Times Roman are either registered
   trademarks or trademarks of Heidelberger Druckmaschinen AG in the U.S. and
   other countries.

   IBM, AIX, OS/2, PowerPC, PS/2, S/390, and ThinkPad are trademarks of
   International Business Machines Corporation in the United States, other
   countries, or both.

   IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical
   and Electronics Engineers, Inc. in the United States.

   Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are
   trademarks or registered trademarks of Intel Corporation or its
   subsidiaries in the United States and other countries.

   Intuit and Quicken are registered trademarks and/or registered service
   marks of Intuit Inc., or one of its subsidiaries, in the United States and
   other countries.

   Linux is a registered trademark of Linus Torvalds.

   LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID and Mylex are trademarks or
   registered trademarks of LSI Logic Corp.

   M-Systems and DiskOnChip are trademarks or registered trademarks of
   M-Systems Flash Disk Pioneers, Ltd.

   Macromedia, Flash, and Shockwave are trademarks or registered trademarks
   of Macromedia, Inc. in the United States and/or other countries.

   Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media and
   Windows NT are either registered trademarks or trademarks of Microsoft
   Corporation in the United States and/or other countries.

   Netscape and the Netscape Navigator are registered trademarks of Netscape
   Communications Corporation in the U.S. and other countries.

   GateD and NextHop are registered and unregistered trademarks of NextHop in
   the U.S. and other countries.

   Motif, OSF/1, and UNIX are registered trademarks and IT DialTone and The
   Open Group are trademarks of The Open Group in the United States and other
   countries.

   Oracle is a registered trademark of Oracle Corporation.

   PowerQuest and PartitionMagic are registered trademarks of PowerQuest
   Corporation in the United States and/or other countries.

   RealNetworks, RealPlayer, and RealAudio are the registered trademarks of
   RealNetworks, Inc.

   Red Hat, RPM, are trademarks or registered trademarks of Red Hat, Inc. in
   the United States and other countries.

   SAP, R/3, and mySAP are trademarks or registered trademarks of SAP AG in
   Germany and in several other countries all over the world.

   Sun, Sun Microsystems, Java, Java Virtual Machine, JDK, JRE, JSP, JVM,
   Netra, Solaris, StarOffice and SunOS are trademarks or registered
   trademarks of Sun Microsystems, Inc. in the United States and other
   countries.

   Symantec and Ghost are registered trademarks of Symantec Corporation in
   the United States and other countries.

   MATLAB is a registered trademark of The MathWorks, Inc.

   SpeedTouch is a trademark of Thomson.

   U.S. Robotics and Sportster are registered trademarks of U.S. Robotics
   Corporation.

   VMware is a trademark of VMware, Inc.

   Waterloo Maple and Maple are trademarks or registered trademarks of
   Waterloo Maple Inc.

   Mathematica is a registered trademark of Wolfram Research, Inc.

   XFree86 is a trademark of The XFree86 Project, Inc.

   Ogg Vorbis and Xiph.Org are trademarks of Xiph.Org.

   Many of the designations used by manufacturers and sellers to distinguish
   their products are claimed as trademarks. Where those designations appear
   in this document, and the FreeBSD Project was aware of the trademark
   claim, the designations have been followed by the "(TM)" or the "(R)"
   symbol.

   2016-05-17 13:49:29 por wblock.
   Resumen

   !Bienvenido a FreeBSD! Este manual cubre la instalacion y uso diario de
   FreeBSD 11.1-RELEASE y FreeBSD 10.4-RELEASE. Este manual esta en constante
   evolucion y es el resultado del trabajo de muchas personas. Algunas
   secciones no estan completas y otras necesitan ser actualizadas. Si esta
   interesado en colaborar en este proyecto envie un mensaje de correo
   electronico a lista de correo del proyecto de documentacion de FreeBSD. La
   ultima version de este documento esta siempre disponible en el sitio web
   de FreeBSD. Tambien puede encontrarla en diferentes formatos y opciones de
   compresion en el servidor FTP de FreeBSD o en las numerosas replicas. Si
   prefiere una copia en papel de este manual puede comprarla en FreeBSD
   Mall. Tambien es posible hacer busquedas en este manual.

   [ Split HTML / Single HTML ]

     ----------------------------------------------------------------------

   Tabla de contenidos

   Prefacio

   I. Primeros pasos

                1. Introduccion

                             1.1. Sinopsis

                             1.2. Bienvenido a FreeBSD

                             1.3. Acerca del Proyecto FreeBSD

                2. Instalacion de FreeBSD

                             2.1. Sinopsis

                             2.2. Requisitos de hardware

                             2.3. Tareas anteriores a la instalacion

                             2.4. Inicio de la instalacion

                             2.5. ?Que es sysinstall?

                             2.6. Asignacion de espacio en disco

                             2.7. Eleccion de que instalar

                             2.8. Eleccion del medio de instalacion

                             2.9. El punto sin retorno

                             2.10. Despues de la instalacion

                             2.11. Solucion de problemas

                             2.12. Guia avanzada de instalacion

                             2.13. Como preparar su propio medio de
                             instalacion

                3. Conceptos basicos de Unix

                             3.1. Sinopsis

                             3.2. Consolas virtuales y terminales

                             3.3. Permisos

                             3.4. Estructura de directorios

                             3.5. Organizacion de disco

                             3.6. Montaje y desmontaje de sistemas de
                             ficheros

                             3.7. Procesos

                             3.8. Daemons, senales y como matar procesos

                             3.9. Shells

                             3.10. Editores de texto

                             3.11. Dispositivos y nodos de dispositivos

                             3.12. Formatos binarios

                             3.13. Mas informacion

                4. Instalacion de aplicaciones: <<packages>> y ports

                             4.1. Sinopsis

                             4.2. Aproximacion a la instalacion de software

                             4.3. Como encontrar aplicaciones

                             4.4. Uso del sistema de packages

                             4.5. Uso de la coleccion de ports

                             4.6. Despues de instalar un port

                             4.7. Ports que no funcionan

                5. El sistema X Window

                             5.1. Sinopsis

                             5.2. Entender X

                             5.3. Instalar X11

                             5.4. Configuracion de X11

                             5.5. Uso de tipos en X11

                             5.6. El gestor de pantalla X

                             5.7. Entornos de escritorio

   II. Tareas comunes

                6. Aplicaciones de escritorio

                             6.1. Sinopsis

                             6.2. Navegadores

                             6.3. Productividad

                             6.4. Visores de documentos

                             6.5. Finanzas

                             6.6. Resumen

                7. Multimedia

                             7.1. Sinopsis

                             7.2. Configuracion de la tarjeta de sonido

                             7.3. Sonido MP3

                             7.4. Reproduccion de video

                             7.5. Configuracion de tarjetas de TV

                             7.6. Escaneres de imagenes

                8. Configuracion del kernel de FreeBSD

                             8.1. Sinopsis

                             8.2. ?Que razones hay para compilar un kernel
                             personalizado?

                             8.3. Inventario de hardware del sistema

                             8.4. Controladores del kernel, subsistemas y
                             modulos

                             8.5. Compilacion e instalacion de un kernel
                             personalizado

                             8.6. El fichero de configuracion

                             8.7. Que hacer si algo va mal

                9. Imprimir

                             9.1. Sinopsis

                             9.2. Introduccion

                             9.3. Configuracion basica

                             9.4. Configuracion avanzada de impresoras

                             9.5. Como utilizar impresoras

                             9.6. Alternativas a LPD

                             9.7. Solucion de problemas

                10. Compatibilidad binaria con Linux

                             10.1. Sinopsis

                             10.2. Instalacion

                             10.3. Instalacion de Mathematica(R)

                             10.4. Instalacion de Maple(TM)

                             10.5. Instalacion de MATLAB(R)

                             10.6. Instalacion de Oracle(R)

                             10.7. Instalacion de SAP(R) R/3(R)

                             10.8. Temas avanzados

   III. Administracion del sistema.

                11. Configuracion y Adaptacion del Sistema

                             11.1. Configuracion de Tarjetas de Red

                             11.2. "Arrancar servicios"

                             11.3. "Soft Updates"

                             11.4. Anadir espacio swap

                12. El proceso de arranque en FreeBSD

                             12.1. Sinopsis

                             12.2. El problema que representa arrancar el
                             sistema

                             12.3. El RMA y las etapas de arranque uno, dos y
                             tres

                             12.4. Interaccion con el kernel durante el
                             arranque

                             12.5. Device Hints

                             12.6. Init: inicializacion del proceso de
                             control

                             12.7. Secuencia de apagado

                13. Usuarios y administracion basica de cuentas

                             13.1. Sinopsis

                             13.2. Introduccion

                             13.3. La cuenta superusuario

                             13.4. Cuentas de sistema

                             13.5. Cuentas de usuario

                             13.6. Modificacion de cuentas

                             13.7. Limitar a los usuarios

                             13.8. Personalizar a los usuarios

                             13.9. Grupos

                14. Seguridad

                             14.1. Sinopsis

                             14.2. Introduccion

                             14.3. Asegurar FreeBSD

                             14.4. DES, MD5 y Crypt

                             14.5. Contrasenas de un solo uso

                             14.6. TCP Wrappers

                             14.7. KerberosIV

                             14.8. Kerberos5

                             14.9. OpenSSL

                             14.10. VPN sobre IPsec

                             14.11. OpenSSH

                             14.12. Listas de control de acceso a sistemas de
                             ficheros

                             14.13. Monitorizacion de fallos de seguridad de
                             aplicaciones

                             14.14. FreeBSD Security Advisories

                             14.15. Contabilidad de procesos

                15. Jaulas

                             15.1. Sinopsis

                             15.2. Terminos relacionados con las jaulas

                             15.3. Introduccion

                             15.4. Creacion y gestion de jaulas

                             15.5. Administracion y personalizacion a fondo

                             15.6. Uso de las jaulas

                16. Mandatory Access Control

                             16.1. Sinopsis

                             16.2. Terminos clave en este capitulo

                             16.3. Explicacion de MAC

                             16.4. Las etiquetas MAC

                             16.5. Configuracion de modulos

                             16.6. El modulo MAC ifoff

                             16.7. El modulo MAC portacl

                             16.8. Politicas de etiquetas MAC

                             16.9. El modulo MAC partition

                             16.10. El modulo de seguridad multinivel MAC

                             16.11. El modulo MAC Biba

                             16.12. El modulo MAC LOMAC

                             16.13. Implementacion de un entorno seguro con
                             MAC

                             16.14. Otro ejemplo: Uso de MAC para restringir
                             un servidor web

                             16.15. Depuracion de errores en MAC

                17. Auditoria de eventos de seguridad

                             17.1. *

                18. Almacenamiento

                             18.1. Sinopsis

                             18.2. Nombres de dispositivo

                             18.3. Anadir discos

                             18.4. RAID

                             18.5. Dispositivos de almacenamiento USB

                             18.6. Creacion y uso de medios opticos (CD)

                             18.7. Crear y utilizar medios opticos (DVDs)

                             18.8. Creacion y uso de disquetes (floppies)

                             18.9. Creacion y uso de cintas de datos

                             18.10. Respaldos en disquetes

                             18.11. Bases para respaldos

                             18.12. Sistemas de ficheros en red, memoria y
                             respaldados en fichero

                             18.13. Instantaneas ("snapshots") de sistemas de
                             ficheros

                             18.14. Cuotas en sistemas de ficheros

                             18.15. Cifrado de particiones de disco

                19. GEOM: Marco de trabajo modular de transformacion de
                discos

                             19.1. Sinopsis

                             19.2. Introduccion a GEOM

                             19.3. RAID0 - Distribucion por bandas

                             19.4. RAID1 - Replicacion

                20. El Gestor de Volumenes Vinum

                             20.1. Sinopsis

                             20.2. Los Discos son Demasiado Pequenos

                             20.3. Cuellos de Botella en el Acceso

                             20.4. Integridad de Datos

                             20.5. Objetos Vinum

                             20.6. Ejemplos

                             20.7. Esquema de Nombres de los Objetos

                             20.8. Configuracion de Vinum

                             20.9. Uso de Vinum en el Sistema de Ficheros
                             Raiz

                21. Virtualizacion

                             21.1. *

                22. Localizacion - Uso y configuracion de I18N/L10N

                             22.1. Sinopsis

                             22.2. Lo basico

                             22.3. Uso de la localizacion

                             22.4. Compilacion de programas con soporte para
                             I18N

                             22.5. Localizacion de FreeBSD a idiomas
                             especificos

                23. Lo ultimo de lo ultimo

                             23.1. Sinopsis

                             23.2. FreeBSD-CURRENT vs. FreeBSD-STABLE

                             23.3. Sincronizacion de su codigo fuente

                             23.4. Uso de make world

                             23.5. Redes pequenas

   IV. Comunicaciones en red

                24. Comunicaciones serie

                             24.1. Sinopsis

                             24.2. Introduccion

                             24.3. Terminales

                             24.4. Servicio dial-in

                             24.5. Servicio dial-out

                             24.6. Configurando la consola serie

                25. PPP y SLIP

                             25.1. Sinopsis

                             25.2. Uso de User PPP

                             25.3. Uso de Kernel PPP

                             25.4. Uso de PPP sobre Ethernet (PPPoE)

                             25.5. Uso de PPP sobre ATM (PPPoA)

                             25.6. Uso de SLIP

                26. Cortafuegos

                             26.1. *

                27. Correo Electronico

                             27.1. Sinopsis

                             27.2. Utilizacion del correo electronico

                             27.3. Configuracion de sendmail

                             27.4. Sustitucion del Agente de Transferencia de
                             Correo

                             27.5. Depuracion de Problemas

                             27.6. Conceptos Avanzados

                             27.7. SMTP con UUCP

                             27.8. Configuracion para solamente enviar correo

                             27.9. Utilizacion del correo con una conexion
                             mediante modem analogico (dial-up)

                             27.10. Autentificacion utilizando SMTP

                             27.11. Agente de Correo de Usuario

                             27.12. Manejo de fetchmail

                             27.13. Uso de procmail

                28. Servidores de red

                             28.1. *

                29. Networking avanzado

                             29.1. Resumen

                             29.2. Pasarelas y "routers"

                             29.3. Redes sin cables ("wireless")

                             29.4. Bluetooth

                             29.5. Puenteado

                             29.6. NFS

                             29.7. Ejecucion sin disco duro

                             29.8. RDSI

                             29.9. NIS/YP

                             29.10. DHCP

                             29.11. DNS

                             29.12. NTP

                             29.13. Traduccion de direcciones de red

                             29.14. El "Superservidor" inetd

                             29.15. Linea IP paralela (PLIP)

                             29.16. IPv6

                             29.17. ATM en FreeBSD 5.X

   V. Apendices

                30. Como obtener FreeBSD

                             30.1. Servidores FTP

                             30.2. Uso de CVSup

                31. Bibliografia

                             31.1. Libros y revistas especificas sobre
                             FreeBSD

                             31.2. Guias de usuario

                             31.3. Guias de administrador

                             31.4. Guias de programadores

                             31.5. El sistema operativo por dentro

                             31.6. Referencia de seguridad

                             31.7. Referencia de hardware

                             31.8. Historia de UNIX

                             31.9. Diarios y revistas

                A. Recursos en Internet

                             A.1. Listas de correo

                             A.2. Grupos de noticias de Usenet

                             A.3. Servidores WWW

                             A.4. Direcciones de correo electronico

                             A.5. Cuentas shell

                32. PGP keys

                             32.1. Responsables

                             32.2. Miembros del Core Team

                Indice

   Lista de figuras

   2.1. Ejemplo de resultado de prueba de dispositivos

   2.2. Menu de seleccion de pais

   2.3. Salir de Sysinstall

   2.4. Seleccion de <<Usage>> en el menu principal de sysinstall

   2.5. Seleccion del menu de documentacion

   2.6. El menu de documentacion de sysinstall

   2.7. Menu principal de sysinstall

   2.8. Menu de esquemas de teclado de sysinstall

   2.9. Menu principal de sysinstall

   2.10. Opciones de sysinstall

   2.11. Comenzar una instalacion estandar

   2.12. Elija en que unidad usar FDisk

   2.13. Un ejemplo de particionamiento tipico con FDisk

   2.14. Particion con FDisk usando el disco completo

   2.15. Menu de gestores de arranque de sysinstall

   2.16. Salir de la seleccion de unidad

   2.17. El editor Disklabel

   2.18. Editor Disklabel con valores por omision

   2.19. Liberar espacio para la particion raiz

   2.20. Edicion del tamano de la particion raiz

   2.21. Elegir el tipo de particion raiz

   2.22. Elegir el punto de montaje del sistema de ficheros raiz

   2.23. Editor Disklabel

   2.24. Eleccion de distribuciones

   2.25. Confirmar la eleccion de distribuciones

   2.26. Choose Installation Media

   2.27. Seleccion de un dispositivo Ethernet

   2.28. Configuracion de ed0

   2.29. Edicion de inetd.conf

   2.30. Edicion del mensaje de bienvenida de FTP

   2.31. Edicion de exports

   2.32. Opciones de configuracion de la consola del sistema

   2.33. Opciones del salvapantallas

   2.34. Retardo del salvapantallas

   2.35. Salida del menu de configuracion de la consola del sistema

   2.36. Eleccion de region

   2.37. Eleccion de pais

   2.38. Eleccion de zona horaria

   2.39. Elija el protocolo que usa el raton

   2.40. Ajuste del protocolo del raton

   2.41. Configuracion del puerto del raton

   2.42. Configuracion del puerto del raton

   2.43. Arranque del daemon del raton

   2.44. Prueba del daemon del raton

   2.45. Categorias de <<packages>>

   2.46. Seleccion de <<packages>>

   2.47. Instalacion de <<packages>>

   2.48. Confirmacion previa a la instalacion de <<packages>>

   2.49. Seleccion de <<Anadir un usuario>>

   2.50. Anadir la informacion del usuario

   2.51. Salir de la gestion de usuarios y grupos

   2.52. Salir de la instalacion

   2.53. Primer nivel de servicios de red

   2.54. Elegir el MTA del sistema

   2.55. Configuracion de Ntpdate

   2.56. Segundo nivel de configuracion de red

   20.1. Organizacion Concatenada

   20.2. Organizacion con "Striping"

   20.3. Organizacion en RAID-5

   20.4. Un Volumen Vinum Sencillo

   20.5. Un Volumen Vinum Replicado

   20.6. Un Volumen Vinum en "Striping"

   20.7. Un Volumen Vinum Replicado y en "Striping"

   Lista de tablas

   2.1. Ejemplo de inventario de dispositivos

   2.2. Estructura de particiones del primer disco

   2.3. Esquema de particiones para varios discos

   2.4. Nombres y funciones de las imagenes de FreeBSD 6.X and 7.X

   3.1. Codigos de dispositivos de disco

   18.1. Convenciones para nombrar discos fisicos

   29.1. Cableado de una conexion de cable paralelo para redes

   29.2. Direcciones IPv6 reservadas

   Lista de ejemplos

   2.1. Uso de una particion sin cambiar nada

   2.2. Reducir una particion existente

   3.1. Ejemplo de nombres de disco, <<slice>> y particion

   3.2. Modelo conceptual de un disco

   4.1. Descarga de un paquete manualmente e instalacion en nuestro sistema

   12.1. Pantalla boot0

   12.2. Pantalla de boot2

   12.3. Una consola insegura en /etc/ttys

   13.1. Configuracion de adduser

   13.2. Eliminacion interactiva de cuenta con rmuser

   13.3. chpass interactivo ejecutado por el superusuario

   13.4. chpass interactivo ejecutado por un usuario normal

   13.5. Cambio de tu contrasena

   13.6. Cambio de la contrasena de otro usuario como superusuario

   13.7. Anadir un grupo usando pw(8)

   13.8. Anadir a alguien a un grupo usando pw(8)

   13.9. Determinar pertenencia a grupos con id(1)

   14.1. Uso de SSH para crear un tunel seguro para SMTP

   18.1. Utilizando dump a traves de ssh

   18.2. Uso de dump a traves de ssh con RSH configurada

   18.3. Un "script" para la creacion de discos flexibles de arranque

   18.4. Uso de vnconfig para montar una imagen de un sistema de ficheros
   bajo FreeBSD 4.X

   18.5. Creacion de una imagen nueva de un sistema de ficheros respaldado en
   un archivo con vnconfig

   18.6. Uso de mdconfig para montar una imagen de un sistema de ficheros en
   FreeBSD 5.X

   18.7. Creacion de un disco respaldado en fichero con mdconfig

   18.8. Configurar y montar un disco basado en un fichero con mdmfs

   18.9. Disco de memoria md en FreeBSD 4.X

   18.10. Creacion de un nuevo disco basado en memoria con mdconfig

   18.11. Creacion de un nuevo disco basado en memoria con mdmfs

   24.1. Agregando entradas de terminal a /etc/ttys

   27.1. Configuracion de la base de datos de acceso de sendmail

   27.2. Mail Aliases

   27.3. Ejemplo de asociacion de correo de dominio virtual

   29.1. Anclaje de una exportacion utilizando amd

   29.2. Sucursal o red domestica

   29.3. Oficina central u otra LAN

   29.4. Envio de una senal HANGUP a inetd

                                    Prefacio

A quien va dirigido este texto

   La primera seccion de este libro esta pensada para guiar a los recien
   llegados a FreeBSD durante el proceso de instalacion y presentarles los
   conceptos y convenciones que dan entidad a UNIX(R). Para sacar provecho de
   esta seccion lo unico que el lector necesitara son ganas de explorar y
   habilidad para ir interiorizando nuevos conceptos a medida que le van
   planteando.

   La siguiente seccion, la segunda, mucho mas extensa, es una referencia
   completa de todo tipo de temas de interes para administradores de sistemas
   FreeBSD. Es posible que alguno de esos capitulos requiera que previamente
   lea otros textos; si es el caso esto se anuncia en la sinopsis situada al
   principio de cada capitulo.

   Hay una lista de fuentes de informacion adicionales en el Capitulo 31,
   Bibliografia.

Cambios desde la segunda edicion

   Esta tercera edicion es la culminacion de mas de dos anos de trabajo de
   los miembros del FreeBSD Documentation Project. Estos son los cambios mas
   importantes que encontrara en esta nueva edicion:

     * Capitulo 11, Configuracion y Adaptacion del Sistema, configuracion y
       adaptacion del sistema, ha sido ampliado con nuevos datos sobre el
       sistema de gestion de energia y recursos ACPI, la utilidad del sistema
       cron y mas opciones de personalizacion del kernel.

     * Capitulo 14, Seguridad, seguridad, ha sido ampliado con informacion
       sobre redes privadas virtuales (VPN), listas de control de accesos al
       sistema de ficheros (mas conocidas por ACL) e informacion sobre avisos
       de seguridad.

     * Capitulo 16, Mandatory Access Control, Mandatory Access Control (MAC),
       es un capitulo nuevo. En el se expone que es MAC y de que forma puede
       utilizarse en FreeBSD como complemento de la seguridad del sistema.

     * Capitulo 18, Almacenamiento, almacenamiento, se ha ampliado con
       informacion sobre dispositivos USB de almacenamiento, instantaneas
       ("snapshots") de sistemas de ficheros, sistemas de ficheros basados en
       ficheros y en red, y particiones de disco cifradas.

     * Capitulo 20, El Gestor de Volumenes Vinum, Vinum, es un capitulo
       nuevo. Describe el uso de Vinum, un gestor de volumenes logicos que
       permite disponer de discos logicos independientes de dispositivo, asi
       como de RAID-0, RAID-1 y RAID-5 por software.

     * Se ha anadido una seccion de depuracion de problemas al Capitulo 25,
       PPP y SLIP, PPP y SLIP.

     * Capitulo 27, Correo Electronico, correo electronico, ha sido ampliado
       con informacion sobre el uso de MTA alternativos, autentificacion
       SMTP, UUCP, fetchmail, procmail asi como otros temas avanzados
       relacionados con el correo.

     * Capitulo 28, Servidores de red, servidores de red, es un capitulo
       nuevo. En el se incluye informacion sobre la configuracion de Apache
       HTTP Server, ftpd y como configurar Samba para su uso con clientes
       Microsoft(R) Windows(R). Ciertas partes de Capitulo 29, Networking
       avanzado, "networking" avanzado, se han trasladado a este capitulo
       para dar mas solidez al contenido.

     * Capitulo 29, Networking avanzado, "networking" avanzado, incluye en
       esta edicion nuevos datos sobre el uso de dispositivos Bluetooth(R) en
       FreeBSD, la configuracion de redes "wireless" y el "networking" ATM
       (Asynchronous Transfer Mode).

     * Se ha creado un glosario para disponer de una ubicacion centralizada
       donde encontrar definiciones de terminos tecnicos que se utilizan a lo
       largo del libro.

     * Las tablas e imagenes que aparecen en el libro han experimentado
       diversas mejoras est'ticas.

Cambios desde la primera edicion

   La segunda edicion fue la culminacion de mas de dos anos de trabajo de los
   miembros del FreeBSD Documentation Project. Estos son los principales
   cambios que encontrara en esta edicion:

     * Se ha creado un indice completo.

     * Todos los esquemas ASCII han sido reemplazados por diagramas graficos.

     * Se ha anadido una sinopsis estandar a cada capitulo donde se ofrece un
       breve sumario del contenido del capitulo y que se espera que sepa el
       lector para poder sacarle provecho.

     * Se ha reorganizado de forma logica el contenido en tres partes:
       "primeros pasos", "administracion del sistema " y "apendices".

     * El Capitulo 2, Instalacion de FreeBSD ("instalacion de FreeBSD") ha
       sido reescrito completamente e incluye gran cantidad de capturas de
       pantalla para facilitar su comprension a los nuevos usuarios.

     * El Capitulo 3, Conceptos basicos de Unix ("conceptos basicos de
       UNIX(R)") se ha ampliado con mas informacion sobre procesos, daemons y
       senales.

     * El Capitulo 4, Instalacion de aplicaciones: <<packages>> y ports
       ("instalacion de aplicaciones") incluye informacion sobre la gestion
       de paquetes binarios.

     * El Capitulo 5, El sistema X Window, ("El sistema X Window") ha sido
       reescrito totalmente, con especial enfasis en el uso de modernas
       tecnologias de escritorio como KDE y GNOME en XFree86(TM) 4.X.

     * El Capitulo 12, El proceso de arranque en FreeBSD ("El proceso de
       arranque de FreeBSD") ha sido ampliado.

     * El Capitulo 18, Almacenamiento ("Almacenamiento") ha sido el fruto de
       refundir el contenido de lo eran dos capitulos sobre "discos" y
       "copias de seguridad". Pensamos que estos temas eran mas faciles de
       entender si se trataban en un mismo capitulo. Se ha anadido tambien
       una seccion sobre RAID (tanto hardware como software).

     * El Capitulo 24, Comunicaciones serie ("communicaciones serie") ha sido
       reorganizado y actualizado completamente con informacion sobre FreeBSD
       4.X y 5.X.

     * El Capitulo 25, PPP y SLIP ("PPP y SLIP") ha sido actualizado en gran
       parte.

     * Se han anadido muchas secciones nuevas al Capitulo 29, Networking
       avanzado ("Networking avanzado").

     * El Capitulo 27, Correo Electronico ("correo electronico" incluye ahora
       mas informacion sobre la configuracion de sendmail.

     * El Capitulo 10, Compatibilidad binaria con Linux ("compatibilidad
       conLinux(R)") se ha ampliado con informacion sobre la instalacion de
       Oracle(R) y SAP(R) R/3(R).

     * En esta segunda edicion se incluyen tambien estos nuevos contenidos:

          * Configuracion y adaptacion del sistema (Capitulo 11,
            Configuracion y Adaptacion del Sistema).

          * Multimedia (Capitulo 7, Multimedia)

Como se organiza este libro

   Este libro se divide en cinco secciones logicamente distintas. La primera,
   primeros pasos, trata sobre la instalacion y el uso mas basico de FreeBSD.
   Esta pensada para que el lector los recorra en secuencialmente, aunque
   puede saltarse algunos si tratan sobre temas que le resulten familiares.
   La segunda seccion, Tareas comunes, esta dedicada a las caracteristicas de
   FreeBSD que suelen utilizarse con mas frecuencia. Esta seccion, asi como
   las siguientes, pueden leerse en cualquier orden. Cada capitulo comienza
   con una sinopsis sucinta en la que se describe el contenido del capitulo y
   que es lo que se espera que sepa el lector antes de leerlo. Esto se hace
   para dar ocasion al lector ocasional a que elija el capitulo que mas pueda
   interesarle. La tercera seccion, Administracion del sistema, trata sobre
   diversos aspectos de la administracion del sistema. La cuarta seccion,
   Redes y comunicaciones, esta dedicada al "networking" y temas relacionados
   con los servidores. La quinta seccion dispone de apendices con informacion
   de referencia.

   Capitulo 1, Introduccion, Presentacion

           Este capitulo, como su nombre indica, presenta FreeBSD al usuario.
           En el se cuenta la historia del Proyecto FreeBSD, sus objetivos y
           su modelo de desarrollo.

   Capitulo 2, Instalacion de FreeBSD, Instalacion

           Guia al usuario a traves de un proceso completo de instalacion. Se
           explican tambien algunos aspectos avanzados como la instalacion a
           traves de una consola serie.

   Capitulo 3, Conceptos basicos de Unix, Conceptos basicos de UNIX(R)

           Se explican los comandos mas basicos y el funcionamiento del
           sistema operativo FreeBSD. Si ya se tiene experiencia con Linux(R)
           u otro tipo de UNIX(R) posiblemente sea este un capitulo que no
           deba leerse.

   Capitulo 4, Instalacion de aplicaciones: <<packages>> y ports, Instalacion
   de aplicaciones

           Se explica la instalacion de software desarrollado por personas
           ajenas al proyecto, tanto mediante la innovadora "Coleccion de
           Ports" de FreeBSD como mediante paquetes binarios estandar
           ("packages").

   Capitulo 5, El sistema X Window, El sistema X Window

           Describe el sistema X Windows en general y su uso en FreeBSD en
           particular. Describe tambien entornos de escritorio de uso comun
           como KDE y GNOME.

   Capitulo 6, Aplicaciones de escritorio, Aplicaciones de escritorio

           Se enumeran algunas aplicaciones de escritorio muy comunes, como
           navegadores web y suites ofimaticas, y como instalar estas
           aplicaciones en FreeBSD.

   Capitulo 7, Multimedia, Multimedia

           Trata sobre la configuracion la reproduccion de sonido y video en
           su sistema. Describe tambien algunas aplicaciones de sonido y
           video.

   Capitulo 8, Configuracion del kernel de FreeBSD, Configuracion del kernel
   de FreeBSD

           Explica bajo que circunstancias tendra que configurar un nuevo
           kernel y facilita instrucciones detalladas para la configuracion,
           compilacion e instalacion de un kernel personalizado.

   Capitulo 9, Imprimir, Imprimir

           Describe la gestion de impresoras en FreeBSD, abarcando aspectos
           diversos como las paginas "banner", las cuentas de impresion asi
           como la configuracion inicial.

   Capitulo 10, Compatibilidad binaria con Linux, Compatibilidad binaria con
   Linux(R)

           Describe las caracteristicas de compatibilidad con Linux(R) de
           FreeBSD. Incluye tambien instrucciones detalladas de instalacion
           de varias aplicaciones Linux(R) muy populares, como Oracle(R),
           SAP(R) R/3(R) y Mathematica(R).

   Capitulo 11, Configuracion y Adaptacion del Sistema, Configuracion y
   adaptacion del sistema

           Describe los parametros que los administradores de sistemas tienen
           a su alcance para hacer que FreeBSD rinda al maximo. Describe
           tambien los diversos ficheros de configuracion que se usan en
           FreeBSD y donde estan.

   Capitulo 12, El proceso de arranque en FreeBSD, El proceso de arranque en
   FreeBSD

           Describe el proceso de arranque de FreeBSD y explica como
           controlar este proceso mediante opciones de configuracion.

   Capitulo 13, Usuarios y administracion basica de cuentas, Usuarios y
   administracion basica de cuentas

           Describe la creacion y gestion de cuentas de usuario. Trata
           tambien sobre la limitacion de recursos que puede aplicarse sobre
           los mismos, asi como otras tareas administrativas.

   Capitulo 14, Seguridad, Seguridad

           Describe las abudantes herramientas diferentes que pueden ayudar a
           que su sistema FreeBSD este y permanezca seguro. Entre ellas
           encontrara a Kerberos, IPsec y OpenSSH.

   Capitulo 15, Jaulas, Jaulas

           Describe el uso de jaulas en FreeBSD y el avance que este
           "framework" supone respecto al tradicional uso de chroot que se
           hacia en FreeBSD.

   Capitulo 16, Mandatory Access Control, Mandatory Access Control

           Explica que es Mandatory Access Control (MAC) y como puede usarse
           este mecanismo para hacer mas seguro FreeBSD

   Capitulo 17, Auditoria de eventos de seguridad, Auditoria de eventos de
   seguridad

           Describe que es la auditoria de eventos en FreeBSD como instalarla
           y configurarla y como pueden inspeccionarse y monitorizarse dichas
           auditorias.

   Capitulo 18, Almacenamiento, Almacenamiento

           Describe como gestionar medios de almacenamiento y sistemas de
           ficheros en FreeBSD, tanto discos fisicos, arreglos RAID, medios
           opticos o en cinta, como discos en memoria y sistemas de ficheros
           en red.

   Capitulo 19, GEOM: Marco de trabajo modular de transformacion de discos,
   GEOM

           Trata sobre el "framework" "GEOM" de FreeBSD y como configurar con
           el alguno de los diversos niveles de RAID que admite.

   Capitulo 20, El Gestor de Volumenes Vinum, Vinum

           Describe como usar Vinum, un gestor de volumenes logicos que
           permite tanto el uso de discos logicos independientes de
           dispositivo, como RAID-0, RAID-1 y RAID-5 por software.

   Capitulo 21, Virtualizacion, Virtualizacion

           Describe los sistemas de virtualizacion disponibles en FreeBSD y
           como utilizarlos.

   Capitulo 22, Localizacion - Uso y configuracion de I18N/L10N, Localizacion

           Describe el uso en FreeBSD de idiomas distintos del ingles. Trata
           tanto la localizacion del sistema como de las aplicaciones.

   Capitulo 23, Lo ultimo de lo ultimo, Lo ultimo de lo ultimo

           Explica las diferencias existentes entre FreeBSD-STABLE,
           FreeBSD-CURRENT y las releases de FreeBSD. Describe tambien que
           tipos de usuario pueden beneficiarse de seguir el desarrollo
           continuo del sistema en su propia maquina y muestra el proceso a
           seguir.

   Capitulo 24, Comunicaciones serie, Comunicaciones serie

           Explica como conectar terminales serie y modems a su sistema
           FreeBSD tanto para conexiones entrantes como salientes.

   Capitulo 25, PPP y SLIP, PPP y SLIP

           Describe como usar en FreeBSD PPP, SLIP o PPP sobre Ethernet para
           conexiones a sistemas remotos.

   Capitulo 27, Correo Electronico, Correo electronico

           Detalla los distintos elementos que componen un servidor de correo
           electronico y explica diversos aspectos sencillos de la
           configuracion del servidor de correo mas extendido: sendmail.

   Capitulo 28, Servidores de red, Servidores de red

           En este capitulo encontrara instrucciones detalladas y ficheros de
           configuracion de ejemplo que le permitiran configurar su sistema
           FreeBSD como servidor NFS, servidor de nombres, servidor NIS o de
           sincronizacion de hora.

   Capitulo 26, Cortafuegos, Cortafuegos

           Explica la filosofia que sustenta los cortafuegos por software y
           facilita informacion detallada sobre la configuracion de los
           distintos cortafuegos disponibles en FreeBSD.

   Capitulo 29, Networking avanzado, "Networking" avanzado

           Describe diversos temas relacionados con el "networking", desde
           compartir la conexion a Internet con otras maquinas de su LAN a
           diversos aspectos avanzados del encaminamiento de trafico, pasando
           por las redes "wireless", Bluetooth(R), ATM, IPv6 y mucho mas.

   Capitulo 30, Como obtener FreeBSD, Como conseguir FreeBSD

           Enumera las diferentes fuentes desde la que puede conseguirse
           FreeBSD en CDROM o DVD, asi como los numerosos sitios de Internet
           desde los que puede descargar e instalar FreeBSD.

   Capitulo 31, Bibliografia, Bibliografia

           Este libro toca tantos temas que es muy posible que el lector se
           quede a falta de una explicacion mas detallada. En la bibliografia
           muchos libros estupendos relacionados con el contenido de este
           texto.

   Apendice A, Recursos en Internet, Recursos en Internet

           Describe los abundantes foros de que disponen los usuarios de
           FreeBSD para enviar preguntas y participar en conversaciones
           tecnicas sobre FreeBSD.

   Capitulo 32, PGP keys, PGP Keys

           Lista las claves publicas PGP de varios desarrolladores de
           FreeBSD.

Convenciones usadas en este libro

   Con el animo de mantener la consistencia y facilitar la lectura del texto
   se siguen varias convenciones a lo largo del libro.

  Convenciones tipograficas

   Cursiva

           Se usa un tipo de letracursiva cuando se citan nombres de fichero,
           URL, texto en el que se quiere hacer enfasis y cuando un termino
           tecnico aparece por primera vez en el texto.

   Tipografia de maquina de escribir

           Se usa un tipo de letra de maquina de escribir cuando se muestran
           mensajes de error, comandos, variables de entorno, nombres de
           "ports", nombres de maquina, nombres de usuario o de grupo,
           nombres de dispositivo, variables y cuando Se usa un tipo de letra
           monospaced cuando se muestran mensajes de error, comandos,
           variables de entorno, nombres de "ports", nombres de maquina,
           nombres de usuario o de grupo, nombres de dispositivo, variables y
           cuando se muestran fragmentos de codigo.

   Negrita

           Se usa un tipo de letra negrita en el nombre de aplicaciones,
           comandos y cuando se muestran claves.

  Datos que introduce el usuario

   Las claves se muestran en negrita para distinguirlas de cualquier otro
   texto. Las combinaciones de teclas que implican que sean pulsadas
   simultaneamente se muestran con el simbolo `+' entre una y otra, como en:

   Ctrl+Alt+Supr

   Esto significa que el usuario debe pulsar las teclas Ctrl, Ctrl, Alt y
   Supr al mismo tiempo.

   Las teclas que deben pulsarse secuencialmente se separan con comas, como
   en este ejemplo:

   Ctrl+X, Ctrl+S

   Esto significa que el usuario debe pulsar simultaneamente las teclas Ctrl
   y X y despues pulsar simultaneamente Ctrl y S.

  Ejemplos

   Un comienzo como E:\> indica un ejemplo de comando de MS-DOS(R). A menos
   que se especifique otra cosa, estos comandos deben ejecutarse en una
   terminal "Command Prompt" de un sistema Microsoft(R) Windows(R) moderno.

 E:\> tools\fdimage floppies\kern.flp A:

   Si hay un # indica que el comando debe ejecutarse como superusuario en
   FreeBSD. Puede acceder al sistema como root y ejecutar el comando o bien
   con su usuario habitual y utilizar su(1) para disponer de privilegios de
   superusuario.

 # dd if=kern.flp of=/dev/fd0

   Si el ejemplo comienza con un % indica que el comando puede ejecutarse en
   una cuenta de usuario normal. Salvo que se indique otra cosa se usa la
   sintaxis de C-shell para asignar valores a variables de entorno u otros
   comandos.

 % top

Agradecimientos

   Este libro representa el esfuerzo de muchos cientos de personas del mundo
   entero. Tanto si fue en forma de correcion de errores de contenido como
   gramaticales, o bien fue un capitulo entero lo que enviaron, toda
   contribucion ha sido muy valiosa.

   Varias companias han colaborado en el desarrollo de este documento pagando
   a tiempo completo a varios autores, financiando la publicacion, etc. En
   especial BSDi (posteriormente adquirida por Wind River Systems) pagaron a
   varios miembros del FreeBSD Documentation Project por trabajar en la
   mejora lo que fue la primera edicion de este libro, que aparecio en marzo
   de 2000 (ISBN 1-57176-241-8). Ademas de esto, Wind River Systems aporto el
   dinero para que otros autores pudieran realizar gran cantidad de mejoras
   en la estructura de creacion de material listo para impresion y para
   pudieran anadir nuevos capitulos. Este trabajo culmino con la publicacion
   de la segunda edicion impresa en noviembre de 2001 (ISBN 1-57176-303-1).
   En 2003 y 2004 FreeBSD Mall, Inc, pago a varios autores para que se
   dedicaran a lo que sera la tercera edicion.

                            Parte I. Primeros pasos

   Esta parte del manual de FreeBSD es para usuarios y administradores nuevos
   en FreeBSD. El cometido de estos capitulos es:

     * Ofrecer una introduccion a FreeBSD.

     * Guiar a traves de una instalacion de FreeBSD.

     * Explicar conceptos basica de Unix.

     * Explicar como instalar la gran cantidad de software de terceros
       disponible para FreeBSD.

     * Presentar una introduccion al manejo de X Window, el sistema de
       ventanas de UNIX(R), y detallar como configurar un entorno de
       escritorio mas productivo.

   Se ha intentado minimizar el numero de referencias a otras secciones de
   este documento para evitar el salto entre paginas y facilitar la lectura
   continuada.

   Tabla de contenidos

   1. Introduccion

                1.1. Sinopsis

                1.2. Bienvenido a FreeBSD

                1.3. Acerca del Proyecto FreeBSD

   2. Instalacion de FreeBSD

                2.1. Sinopsis

                2.2. Requisitos de hardware

                2.3. Tareas anteriores a la instalacion

                2.4. Inicio de la instalacion

                2.5. ?Que es sysinstall?

                2.6. Asignacion de espacio en disco

                2.7. Eleccion de que instalar

                2.8. Eleccion del medio de instalacion

                2.9. El punto sin retorno

                2.10. Despues de la instalacion

                2.11. Solucion de problemas

                2.12. Guia avanzada de instalacion

                2.13. Como preparar su propio medio de instalacion

   3. Conceptos basicos de Unix

                3.1. Sinopsis

                3.2. Consolas virtuales y terminales

                3.3. Permisos

                3.4. Estructura de directorios

                3.5. Organizacion de disco

                3.6. Montaje y desmontaje de sistemas de ficheros

                3.7. Procesos

                3.8. Daemons, senales y como matar procesos

                3.9. Shells

                3.10. Editores de texto

                3.11. Dispositivos y nodos de dispositivos

                3.12. Formatos binarios

                3.13. Mas informacion

   4. Instalacion de aplicaciones: <<packages>> y ports

                4.1. Sinopsis

                4.2. Aproximacion a la instalacion de software

                4.3. Como encontrar aplicaciones

                4.4. Uso del sistema de packages

                4.5. Uso de la coleccion de ports

                4.6. Despues de instalar un port

                4.7. Ports que no funcionan

   5. El sistema X Window

                5.1. Sinopsis

                5.2. Entender X

                5.3. Instalar X11

                5.4. Configuracion de X11

                5.5. Uso de tipos en X11

                5.6. El gestor de pantalla X

                5.7. Entornos de escritorio

Capitulo 1. Introduccion

   Reesctructurado, reorganizado y con algunas partes reescritas por Jim
   Mock.
   Tabla de contenidos

   1.1. Sinopsis

   1.2. Bienvenido a FreeBSD

   1.3. Acerca del Proyecto FreeBSD

1.1. Sinopsis

   Gracias por su interes en FreeBSD. El siguiente capitulo trata varios
   temas relativos al Proyecto FreeBSD, como su historia, objetivos, modelo
   de desarrollo, etc.

   Despues de leer este capitulo sabra:

     * Que relacion guarda FreeBSD con otros sistemas operativos.

     * La historia del Proyecto FreeBSD.

     * Los objetivos del Proyecto FreeBSD.

     * Los fundamentos del modelo de desarrollo de codigo abierto de FreeBSD.

     * Y por supuesto: de donde procede el nombre "FreeBSD".

1.2. Bienvenido a FreeBSD

   FreeBSD es un sistema operativo basado en 4.4BSD-Lite para ordenadores
   Intel (x86 e Itanium(R)), AMD64, Alpha(TM) y Sun UltraSPARC(R). Se esta
   trabajando tambien en versiones para otras arquitecturas. Tambien puede
   leer sobre la historia de FreeBSD, o sobre la distribucion actual. Si cree
   que puede ayudar al proyecto de algun modo (desarrollando codigo, donando
   hardware, dinero, etc) consulte el articulo Contribuir a FreeBSD.

  1.2.1. ?Que puede hacer FreeBSD?

   FreeBSD tiene muchas caracteristicas notables. Algunas de ellas son:

     * Multitarea expropiativa con prioridades dinamicamente ajustadas para
       asegurar que distintas aplicaciones y usuarios compartan los recursos
       del sistema de un modo equitativo, incluso bajo la mayor de las
       cargas.

     * Servicios multiusuario que permiten a mucha gente usar un sistema
       FreeBSD simultaneamente para distintas cosas. Esto significa, por
       ejemplo, que los perifericos del sistema como impresoras y
       dispositivos de cinta son compartidos adecuadamente por varios
       usuarios del sistema o la red, y que pueden establecerse limites sobre
       recursos concretos para usuarios o grupos de usuarios, protegiendo los
       recursos criticos del sistema de un uso abusivo.

     * Conexion de redes TCP/IP muy robusta, con soporte para estandares
       industriales como SCTP, DHCP, NFS, NIS, PPP, SLIP, IPSec e IPv6. Esto
       quiere decir que su sistema FreeBSD puede interactuar facilmente con
       otros sistemas y hacer de servidor en una empresa, proporcionando
       servicios clave como NFS (acceso a ficheros remotos) y servicios de
       correo electronico, o proporcinando la presencia en Internet de su
       organizacion mediante WWW, FTP, servicios de encaminamiento y
       cortafuegos.

     * La proteccion de memoria garantiza que las aplicaciones (o los
       usuarios) no se estorben los unos a los otros. Un error catastrofico
       en una aplicacion no afecta al resto.

     * FreeBSD es un sistema operativo de 32-bits (de 64-bits en Alpha,
       Itanium(R), AMD64, y UltraSPARC(R)) y fue disenado como tal desde el
       principio.

     * X Window System (X11R6), estandar de la industria, dota a los usuarios
       una interfaz grafica (GUI) por el coste de una tarjeta VGA y un
       monitor comunes, y viene con los fuentes completos.

     * Compatibilidad binaria con muchos programas nativos de Linux, SCO,
       SVR4, BSDI y NetBSD.

     * Hay en Internet miles y miles de aplicaciones listas para su uso.
       FreeBSD es compatible a nivel de codigo fuente con la mayoria de
       sistemas UNIX(R) comerciales; por tanto la mayoria de aplicaciones
       requieren poco o ningun cambio para compilar en FreeBSD.

     * En Internet hay miles de aplicaciones faciles de portar. El codigo
       fuente de FreeBSD es compatible con el de los sistemas UNIX(R)
       comerciales mas populares y por ello la mayoria de las aplicaciones
       tan solo necesitan pocos cambios, si es que necesitan alguno, para
       compilar.

     * El diseno de la memoria virtual con paginacion bajo demanda y de la
       "cache unificada de VM/buffer" satisface a aplicaciones que requieren
       grandes cantidades de memoria de forma eficiente aun dando respuestas
       interactivas a otros usuarios.

     * Soporte para SMP en maquinas con multiples CPUs.

     * Una coleccion completa de herramientas de desarrollo en C, C++,
       Fortran, y Perl. Podra encontrar muchos otros lenguajes avanzados para
       investigacion y desarrollo tanto en la la Coleccion de Ports como en
       forma de packace.

     * Disponer del codigo fuente del sistema entero significa contar con el
       mayor nivel de control posible sobre su entorno. ?Para que atarse a
       una solucion propietaria a merced de un fabricante cuando puede tener
       un verdadero sistema abierto?

     * Documentacion exhaustiva en linea.

     * !Y mucho mas!

   FreeBSD esta basado en la version 4.4BSD-Lite del Computer Systems
   Research Group (CSRG) de la Universidad de California en Berkeley, y
   continua la distinguida tradicion de desarrollo de sistemas BSD. Ademas
   del excelente trabajo del CSRG, el Proyecto FreeBSD ha invertido miles de
   horas en ajustar el sistema para conseguir un rendimiento y una fiabilidad
   maximas en situaciones de carga reales. Mientras que muchos de los
   gigantes comerciales se esfuerzan en dotar a los sistemas operativos para
   PC de esas caracteristicas, rendimiento y fiabilidad, FreeBSD puede
   ofrecerlas !ya!

   Los usos que pueda darle a FreeBSD se ven limitados tan solo por su
   imaginacion. Desde el desarrollo de programas hasta la automatizacion de
   fabricas, desde control de inventarios hasta correccion de azimut de
   antenas de satelites remotos; Si puede hacerse con un UNIX(R) comercial lo
   mas seguro es que tambien pueda llevarse a cabo con FreeBSD. FreeBSD
   tambien hace buen uso de las literalmente miles de aplicaciones de alta
   calidad que se desarrollan en centros de investigacion y universidades de
   todo el mundo, frecuentemente disponibles por poco o ningun coste. Tambien
   existen aplicaciones comerciales, cuyo numero aumenta cada dia.

   Dado que el codigo fuente de FreeBSD esta disponible para todo el mundo el
   sistema puede personalizarse en un grado nunca visto para aplicaciones o
   proyectos especiales, y de maneras generalmente imposibles con los
   sistemas operativos de la mayoria de los fabricantes comerciales. Aqui
   damos tan solo una muestra de aplicaciones en las que se esta usando
   actualmente FreeBSD:

     * Servicios de Internet: La robusta conectividad TCP/IP integrada en
       FreeBSD hace de este sistema una plataforma ideal para servicios de
       Internet como:

          * Servidores FTP

          * Servidores web (estandares o seguros [SSL])

          * Cortafuegos y pasarelas NAT ("enmascaramiento IP").

          * Servidores de correo electronico

          * USENET y BBSs

          * y muchos mas.

       Con FreeBSD puede empezar facilmente con un pequeno y economico PC de
       tipo 386 e ir actualizando su equipo hasta un tetraprocesador Xeon con
       almacenamiento RAID a medida que su proyecto crezca.

     * Educacion: ?Es estudiante de informatica o de algun campo relacionado
       con la ingenieria? No hay mejor modo de estudiar sistemas operativos,
       arquitectura de computadores y redes que la experiencia a bajo nivel
       que FreeBSD puede aportar. Para aquellos cuyo principal interes en los
       ordenadores no es otro que el de poder realizar su trabajo existe una
       serie de paquetes gratuitos de CAD, matematicas y diseno grafico que
       hacen de FreeBSD un sistema verdaderamente util.

     * Investigacion: Encontrandose disponible el codigo fuente del sistema
       entero FreeBSD es una excelente plataforma para la investigacion en
       sistemas operativos y otras ramas de la informatica. El hecho de que
       FreeBSD este disponible gratuitamente hace posible que grupos remotos
       puedan colaborar con ideas o compartan desarrollos sin tener que
       preocuparse de acuerdos de licencias especiales o de limitaciones
       acerca de lo que puede discutirse en foros publicos.

     * Redes: ?Necesita un nuevo "router"? ?Un servidor de nombres (DNS)? ?Un
       cortafuegos que haga mas segura su red interna? FreeBSD puede
       convertir ese PC 386 o 486 que tiene arrinconado en un "router"
       avanzado con sofisticadas capacidades de filtrado de paquetes.

     * Estacion de trabajo X: FreeBSD es una magnifica eleccion como terminal
       X de bajo coste gracias al servidor libre X11. A diferencia de las
       terminales X FreeBSD permite ejecutar muchas aplicaciones en local si
       asi se quiere, aligerando de este modo la carga soportada por el
       servidor central. FreeBSD puede incluso arrancar "sin disco",
       permitiendo que las estaciones sean aun mas economicas y faciles de
       administrar.

     * Desarrollo de software: El sistema base de FreeBSD incluye una
       completa coleccion de herramientas de desarrollo que incluyen el
       famoso compilador y depurador de C/C++ de GNU.

   Puede conseguir FreeBSD tanto en forma de codigo fuente como binaria por
   FTP anonimo o en CDROM. Por favor, consulte el Capitulo 30, Como obtener
   FreeBSD para mas informacion.

  1.2.2. ?Quien usa FreeBSD?

   Algunos de los mayores sitios web de Internet utilizan FreeBSD; he aqui
   algunos de ellos:

     * Yahoo!

     * Apache

     * Blue Mountain Arts

     * Pair Networks

     * Sony Japon

     * Netcraft

     * Weathernews

     * Supervalu

     * TELEHOUSE America

     * Sophos Anti-Virus

     * JMA Wired

   y muchos mas.

1.3. Acerca del Proyecto FreeBSD

   En la siguiente seccion se explican ciertos aspectos basicos del Proyecto,
   una breve historia, sus objetivos y el modelo de desarrollo del mismo.

  1.3.1. Breve historia de FreeBSD

   Elaborado por Jordan Hubbard.

   La genesis del proyecto FreeBSD se remonta a comienzos de 1993, en parte
   como una extension del "Unofficial 386BSD Patchkit" debida a los tres
   ultimos coordinadores del patchkit: Nate Williams, Rod Grimes y yo mismo.

   Nuestro objetivo original era producir una instantanea de 386BSD
   intermedia para arreglar una serie de problemas que no se podian solventar
   con uno de nuestros parches. Quizas haya quien recuerde que el primer
   nombre del proyecto fue "386BSD 0.5" o "386BSD Interim" debido a esto.

   386BSD era el sistema operativo de Bill Jolitz, que hasta ese punto habia
   estado sufriendo severamente las consecuencias de practicamente un ano que
   mas valdria olvidar. A medida que el "patchkit" se iba haciendo haciendo
   mas incomodo cada dia que pasaba, asi que acordamos ayudar a Bill con una
   instantanea del sistema. Estos planes se vieron bruscamente interrumpidos
   cuando Bill Jolitz decidio repentinamente retirar su aprobacion al
   proyecto sin dejar ninguna indicacion clara de que debia hacerse a
   continuacion.

   No tardamos mucho en decidir que el objetivo seguia valiendo la pena, aun
   sin el soporte de Bill, asi que adoptamos el nombre de "FreeBSD", una idea
   de David Greenman. Nuestros objetivos iniciales se fijaron tras consultar
   a los usuarios del sistema y cuando quedo claro que el proyecto estaba en
   marcha y que podia llegar a ser una realidad contacte con Walnut Creek
   CDROM con idea de mejorar los canales de distribucion de FreeBSD y hacer
   m's facil llegar a aquellas personas que no tenian la suerte de tener
   acceso a Internet. Walnut Creek CDROM no solo nos ayudo con la idea de
   distribuir FreeBSD en CD; tambien facilito al Proyecto una maquina en la
   que trabajar y una conexion rapida a Internet. Sin la fe casi sin
   precedentes que tuvo Walnut Creek CDROM en lo que era en aquel momento un
   proyecto completamente desconocido, es bastante improbable que FreeBSD
   hubiera logrado tanto y tan rapido como ha logrado hasta el dia de hoy.

   La primera distribucion en CDROM (y disponible por la red) fue FreeBSD
   1.0, publicado en diciembre de 1993. Estaba basado en la cinta de U.C.
   Berkeley del 4.3BSD-Lite ("Net/2"), con bastantes componentes de 386BSD y
   de trabajos proveniente de la Free Software Foundation. Fue un logro
   bastante apreciable para una primera version; pronto le siguio FreeBSD 1.1
   en mayo de 1994, que tuvo un gran exito.

   Por entonces se formaron unos inesperados nubarrones en el horizonte ya
   que Novell y la Universidad de Berkeley resolvieron el largo juicio acerca
   del estatus legal de la cinta de Berkeley Net/2. Una condicion del acuerdo
   fue la concesion por parte de Berkeley de que una gran parte de Net/2 era
   codigo "gravado" y propiedad de Novell, quien a su vez lo habia adquirido
   de AT&T anteriormente. Berkeley obtuvo a cambio de Novell el "beneplacito"
   para que 4.4BSD-Lite, cuando saliera, fuera declarado como "no gravado" y
   se instara a los usuarios de Net/2 a cambiar. Esto repercutio sobre el
   Proyecto FreeBSD, a quienes se dio hasta julio de 1994 para dejar de sacar
   su producto basado en Net/2. Bajo los terminos de aquel acuerdo se
   permitia al Proyecto sacar una ultima version antes de la fecha limite:
   esa version fue FreeBSD 1.1.5.1.

   FreeBSD tuvo entonces que acometer la ardua tarea de (literalmente)
   reinventarse a si mismo a partir de partes nuevas y bastante incompletas
   de 4.4BSD-Lite. Las versiones "Lite" eran ligeras en parte porque el CSRG
   de Berkeley quito grandes partes del codigo necesario para construir un
   sistema que pudiera arrancar (debido a diversos requisitos legales) y
   porque la version del 4.4 para Intel era muy incompleta. Hasta noviembre
   de 1994 el proyecto al fin realizo esa transicion; aparecio FreeBSD 2.0 en
   la red y (a finales de diciembre) en CDROM. A pesar de no estar
   suficientemente pulida esta distribucion fue un exito significativo, al
   cual siguio el mas robusto y facil de instalar FreeBSD 2.0.5; era junio de
   1995.

   Sacamos FreeBSD 2.1.5 en Agosto de 1996; parecio ser suficientemente
   popular entre ISPs y otras comunidades comerciales como para que mereciera
   otra version de la rama 2.1-STABLE. Fue FreeBSD 2.1.7.1, publicada en
   febrero de 1997, que marco el final de la linea principal de desarrollo en
   2-1.STABLE. Una vez en puesta en mantenimiento, en esa rama (RELENG_2_1_0)
   solo se harian ya mejoras en seguridad y se corregirian errores criticos.

   FreeBSD se ramifico desde la linea principal de desarrollo ("-CURRENT") en
   noviembre de 1996 como la rama RELENG_2_2, y la primera version completa
   (2.2.1) salio en abril de 1997. Se hicieron mas versiones de la rama 2.2
   en verano y otono de 1997, la ultima de las cuales (2.2.8) aparecio en
   noviembre de 1998. La primera version 3.0 oficial salio en octubre de 1998
   y marco el inicio del fin de la rama 2.2.

   El arbol se ramifico de nuevo el 20 de Enero de 1999, dando lugar a las
   ramas 4.0-CURRENT y 3.X-STABLE. A partir de la 3.X-STABLE salio 3.1 el 15
   de febrero de 1999, 3.2 el 15 de mayo de 1999, 3.3 el 16 de septiembre de
   1999, 3.4 el 20 de diciembre de 1999 y 3.5 el 24 de junio de 2000. Pocos
   dias despues de esta aparecio una actualizacion menor, la 3.5.1, que
   incorporaba parches de seguridad de ultima hora para Kerberos. Esa fue la
   ultima version de la rama 3.X.

   Hubo otra ramificacion el 13 de Marzo de 2000 que dio lugar a la rama
   4.X-STABLE. Ha habido varias versiones de la misma desde entonces:
   4.0-RELEASE salio en marzo de 2000 y la ultima version de la rama,
   4.11-RELEASE, aparecio en enero de 2005.

   La largamente esperada 5.0-RELEASE se anuncio el 19 de enero de 2003,
   culminando casi tres anos de trabajo; esta version situo a FreeBSD en el
   escenario del multiproceso avanzado y el soporte de hilos para las
   aplicaciones, e introdujo soporte para las plataformas UltraSPARC(R) y
   ia64. Siguio a esta la version 5.1 lanzada en Junio de 2003. La ultima
   version de 5.X como la rama -CURRENT fue 5.2.1-RELEASE, que salio en
   febrero de 2004.

   La rama RELENG_5, creada en agosto de 2004, desemboco en 5.3-RELEASE, que
   marco el inicio de la rama de versiones 5-STABLE. La version 5.5-RELEASE
   mas reciente aparecio en mayo de 2006. No apareceran mas versiones a
   partir de la rama RELENG_5.

   El arbol se dividio de nuevo en julio de 2005, en esta ocasion para crear
   RELENG_6. 6.0-RELEASE, la primera version de la rama 6.X, aparecio en
   noviembre de 2005. 10.4-RELEASE aparecio en October 2017. Iran apareciendo
   mas versiones a partir de la rama RELENG_6.

   La rama RELENG_7

  1.3.2. Objetivos del Proyecto FreeBSD

   Texto original de Jordan Hubbard.

   Los objetivos del Proyecto FreeBSD son producir software que pueda usarse
   con cualquier proposito y sin ningun tipo de restriccion. Muchos de
   nosotros participamos de forma significativa en el codigo (y en el
   proyecto) y ciertamente no nos importaria recibir una pequena compensacion
   economica de vez en cuando, pero no vamos a insistir en ello. Creemos que
   nuestra "mision" mas importante y primordial es facilitar el acceso al
   codigo a cualquiera, para lo que quiera usarlo y de forma que se use tanto
   y para sacarle tanto provecho para sea posible. Creo que este es uno de
   los objetivos mas fundamentales del software libre y algo que nosotros
   apoyamos con entusiasmo.

   El codigo fuente de nuestro arbol que se halla bajo la GNU General Public
   License (GPL) o la Library General Public License (LGPL) viene con algunas
   restricciones mas, si bien para garantizar acceso al mismo, y no al
   contrario como es lo habitual. Debido a las complicaciones adicionales que
   pueden surgir en el uso comercial de software con licencia GPL preferimos
   que el software que incluyamos en el arbol venga bajo la licencia BSD,
   menos restrictiva, siempre y cuando sea una opcion razonable.

  1.3.3. El modelo de desarrollo de FreeBSD

   Texto de Satoshi Asami.

   El desarrollo de FreeBSD es un proceso muy abierto y flexible: FreeBSD
   esta literalmente compuesto de partes hechas por centenares de personas de
   todo el mundo, como puede verse en este texto. la infraestructura de
   desarrollo del proyecto FreeBSD permite a estos cientos de desarrolladores
   trabajar a traves de Internet. Estamos buscando constantemente de nuevos
   desarrolladores e ideas. Las personas interesadas en vincularse mas al
   proyecto tienen que ponerse en contacto con nosotros en la lista de correo
   de discusiones tecnicas en FreeBSD. La lista de anuncios importantes del
   Proyecto FreeBSD esta a disposicion de quienes deseen dar a conocer a
   otros usuarios de FreeBSD grandes areas de trabajo.

   Veamos unas cuantas cosas utiles sobre el Proyecto FreeBSD y su proceso de
   desarrollo, ya sea trabajando de forma independiente o en estrecha
   cooperacion:

   Los repositorios SVN y CVS

           El arbol central de codigo de FreeBSD se ha mantenido mediante CVS
           (Concurrent Versions System, o sistema concurrente de versiones),
           una herramienta de control de codigo totalmente libre que forma
           parte de FreeBSD. En junio de 2008 el Proyecto adopto SVN
           (Subversion). La necesidad de un cambio como este venia de largo a
           medida que las limitaciones tecnicas que el uso de CVS imponia se
           iban haciendo mas y mas obvias con la rapida expansion del arbol
           de codigo y de la cantidad de historial de cambios que hay que
           almacenar y gestionar. Aunque el repositorio principal use SVN las
           aplicaciones del lado del cliente como CVSup y csup, que dependen
           de la infraestructura anterior basada en CVS, siguen funcionando
           normalmente; los cambios que se hacen en el repositorio SVN se van
           replicando en el repositorio CVS con este fin. Actualmente
           (octubre 2008) solamente el arbol central de codigo usa SVN. Los
           repositorios de documentacion, WWW y Ports siguen usando still
           using CVS. El repositorio primario esta alojado en una maquina en
           Santa Clara (California, EEUU), que constituye el original del que
           todas las replicas (a las que llamamos a veces "mirrors") son
           copias exactas actualizadas cada muy poco tiempo. El arbol SVN,
           que contiene tambien los arboles -CURRENT y -STABLE, puede
           replicarse muy facilmente en local en su maquina. Consulte la
           seccion Sincronizacion del arbol de codigo para mas informacion.

   La lista de committers

           Los committers son la gente que tienen permisos de escritura en el
           los fuentes de FreeBSD (el termino "committer" viene de la orden
           commit de cvs(1), que sirve para hacer cambios en el repositorio
           CVS). La mejor manera de enviar aportaciones para que sean
           revisadas por los committers es usar send-pr(1). Si le parece que
           si pareciera que algo va mal en el sistema tambien puede enviar
           correo electronico a la lista de correo para 'committers' de
           FreeBSD.

   El Core Team de FreeBSD

           El Core Team de FreeBSD seria el equivalente a una junta directiva
           si el Proyecto FreeBSD fuese una compania. La tarea principal del
           Core Team es la de garantizar que el Proyecto como un todo tenga
           salud y se mueva en las direcciones adecuadas. Otra de sus
           funciones es invitar a desarrolladores comprometidos y
           responsables a que se unan a nuestro equipo, ademas de reclutar
           nuevos miembros del Core Team cuando alguno se va. El Core Team
           actual fue elegido entre un conjunto de candidatos committers en
           julio de 2008. Se celebran elecciones cada dos anos.

           Algunos miembros del Core Team tienen tambien areas especificas de
           responsabilidad, pues se encargan de garantizar que grandes
           secciones del sistema funcionen segun lo previsto. Hay una lista
           completa de desarrolladores de FreeBSD con sus areas de
           responsabilidad en la lista de colaboradores. .

  Nota:

           La mayoria de los miembros del Core Team trabaja de forma
           altruista en el desarrollo de FreeBSD y no reciben beneficio
           economico del Proyecto; es por esto que "compromiso" no debe
           confundirse con "soporte garantizado". La anterior analogia de la
           "junta directiva" en realidad no es del todo exacta; quiza fuera
           mas acertado decir que esa es la gente que dedica su vida a
           FreeBSD en contra de lo que les aconseja su propio sentido comun.

   Contribuidores externos

           Por ultimo, y no por ello menos importante, el mayor grupo de
           desarrolladores esta formado por los mismos usuarios, quienes
           constantemente nos aportan comentarios y correccion de errores. La
           mejor manera de seguir de cerca el desarrollo (al estilo
           descentralizado de FreeBSD) es suscribirse a la lista de correo de
           discusiones tecnicas en FreeBSD, que es donde se habla de este
           tipo de cosas. Consulte el Apendice A, Recursos en Internet si
           necesita mas informacion sobre las diferentes listas de correo de
           FreeBSD.

           La lista de colaboradores es larga y no para de crecer. ?Por que
           no apuntarse y hacer algo en FreeBSD hoy mismo?

           Aportar codigo no es la unica manera de ayudar al proyecto; hay
           una lista completa de tareas pendientes en el sitio web del
           Proyecto FreeBSD.

   En resumen, nuestro modelo de desarrollo esta organizado como un conjunto
   de circulos concentricos. El modelo centralizado esta disenado pensando el
   la comodidad de los "usuarios" de FreeBSD, que asi tienen un modo sencillo
   de estar al dia con una base de codigo central y por supuesto no para
   excluir a quien quiera ayudar. Nuestro afan es ofrecer un sistema
   operativo estable con un gran conjunto de aplicaciones coherentes que los
   usuarios puedan instalar y usar facilmente (y este modelo esta dando
   buenos resultados)

   Lo unico que pedimos a quienes quieran unirse a nosotros como
   desarrolladores de FreeBSD es la misma dedicacion que los integrantes
   actuales tienen.

  1.3.4. En que consiste el FreeBSD que distribuimos

   FreeBSD es un sistema operativo libre y gratuito que se distribuye con el
   codigo fuente integro. Esta basado en 4.4BSD-Lite y esta disenado para
   funcionar en sistemas Intel i386(TM), i486(TM), Pentium(R),
   Pentium(R) Pro, Celeron(R), Pentium(R) II, Pentium(R) III, Pentium(R) III,
   Pentium(R)4 (o compatible), Xeon(TM), DEC Alpha(TM) y sistemas basados en
   SUN UltraSPARC(R). Esta basado principalmente en software del grupo CSRG
   de la Universidad de Berkeley (California), y tiene mejoras importadas de
   NetBSD, OpenBSD, 386BSD y codigo creado al amparo de la Free Software
   Foundation.

   Desde la version 2.0 de FreeBSD de finales del 94 el rendimiento, conjunto
   de funcionalidades, y estabilidad del sistema han mejorado drasticamente.
   El ultimo cambio consiste en un rediseno del sistema de memoria virtual
   con una cache unificada de VM/buffer que no solo aumenta el rendimiento
   sino que reduce el consumo de memoria de FreeBSD, haciendo que una
   configuracion de 5 MB sea un minimo mas aceptable. Otras mejoras incluyen
   soporte completo para clientes y servidores NIS, soporte para
   transacciones TCP, llamada bajo demanda PPP, soporte para DHCP integrado,
   un subsistema SCSI mejorado, soporte para RDSI (ISDN), soporte para ATM,
   FDDI, adaptadores Fast y Gigabit Ethernet (1000 Mbit), soporte mejorado
   para los ultimos controladores Adaptec y cientos de correcciones de
   errores.

   Ademas de la distribucion base FreeBSD ofrece una coleccion de software
   con miles de programas de uso comun. En el momento de escribir esto hay
   unos 24,000 "Ports" La lista de Ports comprende desde servidores HTTP
   (WWW), juegos, lenguajes de programacion, editores, y practicamente
   cualquier cosa. La coleccion de Ports completa requiere un espacio de
   aproximadamente 500 MB, todos ellos expresados como "deltas" de sus
   fuentes originales. Esto hace que nos sea mucho mas facil actualizar Ports
   y reduce notablemente el espacio en disco que necesitaba la anterior
   Coleccion de Ports 1.0. Para compilar un port uno simplemente se situa
   bajo el directorio del programa que desea instalar, escribe make install y
   deja que el sistema se encargue del resto. La distribucion original
   completa de cada port que compile se descargara dinamicamente de un CDROM
   o un sitio FTP, de modo que solo necesita el espacio necesario para
   compilar los ports que quiera. La mayoria de los ports tambien estan
   precompilados como "packages", que quienes no quieran compilar Ports
   pueden instalar con una simple orden: pkg_add. En el Capitulo 4,
   Instalacion de aplicaciones: <<packages>> y ports tiene mas informacion
   sobre los "packages" y Ports.

   Algunos documentos que pueden ser de ayuda en el proceso de instalacion y
   al utilizar FreeBSD pueden tambien encontrarse el directorio
   /usr/share/doc de cualquier maquina con una version reciente de FreeBSD
   encontrara varios documentos que pueden serle de ayuda en el proceso de
   instalacion o al usar FreeBSD. Para poder consultarlos utilice cualquier
   navegador para seguir estos enlaces:

   El Handbook de FreeBSD

           /usr/share/doc/handbook/index.html

   Las FAQ de FreeBSD

           /usr/share/doc/faq/index.html

   Tambien puede ver la copia original (y mas frecuentemente actualizada) en
   http://www.FreeBSD.org/.

Capitulo 2. Instalacion de FreeBSD

   Reestructurado, reorganizado y con algunas partes reescritas por Jim Mock.
   El recorrido por sysinstall, las capturas de pantalla y el texto original
   son obra de Randy Pratt.
   Tabla de contenidos

   2.1. Sinopsis

   2.2. Requisitos de hardware

   2.3. Tareas anteriores a la instalacion

   2.4. Inicio de la instalacion

   2.5. ?Que es sysinstall?

   2.6. Asignacion de espacio en disco

   2.7. Eleccion de que instalar

   2.8. Eleccion del medio de instalacion

   2.9. El punto sin retorno

   2.10. Despues de la instalacion

   2.11. Solucion de problemas

   2.12. Guia avanzada de instalacion

   2.13. Como preparar su propio medio de instalacion

2.1. Sinopsis

   FreeBSD dispone de un programa en modo texto muy facil de usar llamado
   sysinstall. Es el programa de instalacion por omision en FreeBSD, pero
   quien decida distribuir FreeBSD tiene todo el derecho de facilitar un
   sistema de instalacion propio si asi lo desea. Este capitulo trata sobre
   como usar sysinstall para instalar FreeBSD

   Tras leer este capitulo sabra usted:

     * Como crear los discos de instalacion de FreeBSD

     * Como interpreta (y subdivide) FreeBSD sus discos duros.

     * Como arrancar sysinstall.

     * Que preguntas le hara sysinstall, que significan y como responderlas.

   Antes de leer este capitulo deberia usted:

     * Leer la lista de hardware soportado que se suministra con la con la
       version de FreeBSD que va a instalar y verificar que su hardware esta
       en dicha lista.

  Nota:

   En general estas instrucciones de instalacion han sido escritas para
   computadoras de arquitectura i386(TM) (<<PC compatible>>). En algunos
   puntos concretos se daran instrucciones especificas para otras plataformas
   (por ejemplo Alpha). A pesar de que esta guia se intenta mantener todo lo
   al dia que es posible puede que se encuentre con pequenas diferencias
   entre el programa de instalacion y lo que aqui se le muestra. Le sugerimos
   que use este capitulo como una guia general mas que como un manual literal
   de instalacion.

2.2. Requisitos de hardware

  2.2.1. Configuracion minima

   La configuracion minima para instalar FreeBSD varia segun la version de
   FreeBSD y la arquitectura de hardware.

   Tiene informacion sobre la confuracion minima en las Notas de Instalacion
   que encontrara en la seccion de Informacion de Releases del sitio web de
   FreeBSD. En la siguiente seccion se facilita un resumen de dicha
   informacion. Dependiendo de cual sea el metodo de instalacion que elija
   para instalar FreeBSD necesitara un floppy, un lector de CDROM que pueda
   utilizar con FreeBSD o quizas un adaptador de red. Todo esto se explica en
   la Seccion 2.3.7, "Preparacion del medio de arranque".

    2.2.1.1. FreeBSD/i386 y FreeBSD/pc98

   Tanto FreeBSD/i386 como FreeBSD/pc98 necesitan un procesador 486 o
   superior y un minimo de 24 MB de RAM. Necesitara tambien al menos 150 MB
   de espacio libre en disco, que es lo que necesita la instalacion minima.

  Nota:

   En sistemas muy antiguos la mayoria de las veces sera de mucha mas ayuda
   conseguir mas RAM y espacio de disco que un procesador mas rapido.

    2.2.1.2. FreeBSD/alpha

   Para instalar FreeBSD/alpha necesitara una plataforma que este soportada
   (consulte Seccion 2.2.2, "Hardware soportado") y un disco duro dedicado a
   FreeBSD. En este momento no es posible compartir un disco con otro sistema
   operativo. Este disco debe estar necesariamente conectado a una
   controladora SCSI que este soportada por el firmware SRM, o si se trata de
   un disco IDE el SRM de su maquina debe permitir el arranque desde discos
   IDE.

   Necesitara el firmware de la consola SRM de su plataforma. En ciertos
   casos es posible pasar del firmware AlphaBIOS (o ARC) al SRM. En otros
   casos no habra mas remedio que descargar un nuevo firmware desde el sito
   web del fabricante.

  Nota:

   A partir de FreeBSD 7.0 no hay soporte para Alpha. La serie FreeBSD 6.X es
   la ultima que ofrece soporte para esta arquitectura.

    2.2.1.3. FreeBSD/amd64

   Hay dos tipos de procesadores capaces de ejecutar FreeBSD/amd64. La
   primera son los procesadores AMD64, entre los que estan los
   AMD Athlon(TM)64, AMD Athlon(TM)64-FX, AMD Opteron(TM) y los modelos
   superiores.

   La segunda categoria de procesadores que pueden usar FreeBSD/amd64 es la
   de los procesadores de arquitectura EM64T de Intel(R), por ejemplo las
   familias de procesadores Intel(R) Core(TM) 2 Duo, Quad, y Extreme, y la
   secuencia de procesadores Intel(R) Xeon(TM) 3000, 5000 y 7000.

   Si tiene una maquina basada en una nVidia nForce3 Pro-150 tendra que usar
   la configuracion de la BIOS para deshabilitar IO ACPI. Si no tiene la
   opcion de hacerlo tendra que deshabilitar ACPI. Hay errores en el chipset
   Pro-150 para los que no hemos encontrado aun una solucion.

    2.2.1.4. FreeBSD/sparc64

   Para instalar FreeBSD/sparc64 necesita una plataforma que este soportada
   (consulte la Seccion 2.2.2, "Hardware soportado").

   Necesitara un disco dedicado a FreeBSD/sparc64. De momento es imposible
   compartir un disco duro con otro sistema operativo.

  2.2.2. Hardware soportado

   Cada version de FreeBSD incluye una lista de hardware soportado en las
   <<FreeBSD Hardware Notes>>. Este documento suele estar en un fichero
   llamado HARDWARE.TXT, que esta en el directorio raiz del CDROM o
   distribucion FTP, o en el menu de documentacion de sysinstall. En este
   documento se listan los dispositivos de hardware que se sabe que funcionan
   con cada version de FreeBSD y para que arquitectura. En la pagina de
   Informacion de Releases del sitio web de FreeBSD encontrara copias de esta
   lista para diversas releases y arquitecturas.

2.3. Tareas anteriores a la instalacion

  2.3.1. Inventario de su sistema

   Antes de instalar FreeBSD en su sistema deberia hacer un inventario de los
   componentes de su computadora. El sistema de instalacion de FreeBSD le
   mostrara los componentes (discos duros, tarjetas de red, unidades de
   CDROM, etc.) con sus datos de modelo y fabricante. FreeBSD tratara tambien
   de determinar la configuracion correcta para dichos dispositivos, lo que
   incluye informacion sobre las IRQ y el uso de puertos IO. A causa de la
   ingente variedad de hardware para PC este proceso no siempre se puede
   culminar con exito y es posible que deba corregir las decisiones de
   FreeBSD retocando la configuracion.

   Si ya dispone de otro sistema operativo instalado (como Windows(R) o
   Linux) puede usar los recursos que dicho o dichos sistemas operativos le
   faciliten para determinar exactamente que hardware tiene y como esta
   configurado. Si tiene del todo claro que configuracion esta usando una
   tarjeta de expasion concreta es posible que pueda encontrar esos datos
   impresos en la propia tarjeta. Es muy habitual el uso de las IRQ 3, 5 y 7
   y las direcciones de los puertos IO suelen representarse con numeros
   hexadecimales, como 0x330.

   Le recomendamos imprimir o tomar nota de todos esos datos antes de
   instalar FreeBSD. Una tabla como esta puede serle de mucha ayuda:

   Tabla 2.1. Ejemplo de inventario de dispositivos

    Nombre de dispositivo   IRQ Puerto(s) IO              Notas               
   Primer disco duro        N/A N/A          40 GB, fabricado por Seagate,    
                                             primer maestro IDE               
   CDROM                    N/A N/A          Primer esclavo IDE               
   Segundo disco duro       N/A N/A          20 GB, fabricado por IBM,        
                                             segundo maestro IDE              
   Primera controladora IDE 14  0x1f0                                         
   Tarjeta de red           N/A N/A          Intel(R) 10/100                  
   Modem                    N/A N/A          3Com(R) 56K faxmodem, en COM1    
   ...                                                                        

   Una vez termine el inventorio de componentes de su sistema debe comprobar
   si aparecen en la lista de hardware soportado de la version de FreeBSD que
   vaya a instalar.

  2.3.2. Haga una copia de seguridad de sus datos

   Si la maquina en la que va a instalar FreeBSD contiene datos que desea
   conservar por algun motivo asegurese de haber hecho una copia de seguridad
   de los mismos y de que esa copia es de fiar antes de instalar FreeBSD. El
   sistema de instalacion de FreeBSD le mostrara una advertencia antes de
   modificar datos en su disco pero una vez que el proceso ha comenzado no
   hay manera de dar marcha atras.

  2.3.3. Decida donde instalar FreeBSD

   Si quiere que FreeBSD use todo su disco duro puede saltar tranquilamente a
   la siguiente seccion.

   Si por el contrario necesita que FreeBSD coexista con otros sistemas
   operativos tendra que comprender como se almacenan los datos en el disco
   duro y como le afecta esto.

    2.3.3.1. Esquemas de disco en FreeBSD/i386(TM)

   Un disco de PC puede dividirse en varias partes. Estas partes reciben el
   nombre de partitions. Dado que FreeBSD internamente tambien tiene
   particiones la nomenclatura puede ser confusa muy rapidamente, asi que
   estas partes del disco reciben el nombre de <<disk slices>> o
   sencillamente <<slices>> (<<rebanadas de disco>>y <<rebanadas>>
   respectivamente). Por ejemplo, la version de fdisk que usara FreeBSD con
   las particiones de disco de PC usa la palabra <<slices>> en lugar de
   <<partitions>>. Debido a limitaciones de diseno la plataforma PC solo
   admite cuatro particiones por disco. Dichas particiones reciben el nombre
   de particiones primarias. Esta limitacion puede sortearse (y de ese modo
   disponer de mas de cuatro particiones) gracias a que se creo un nuevo tipo
   de particion, las particiones extendidas. Un disco puede contener una
   unica particion extendida. Dentro de ella pueden crearse particiones
   especiales, que reciben el nombre de particiones logicas.

   Cada particion tiene un identificador de particion (o partition ID), que
   es un numero que se usa para identificar el tipo de datos que alberga la
   particion. Las particiones FreeBSD tienen como identificador de particion
   165.

   Normalmente cada sistema operativo que vaya a utilizar identificara las
   particiones de un modo propio. Por ejemplo DOS (y sus descendientes, como
   Windows(R)) asignan a cada particion primaria y logica una letra de unidad
   a partir de C:.

   FreeBSD debe instalarse en una particion primaria. FreeBSD puede albergar
   todos los datos que necesita, incluyendo cualquier fichero que pueda usted
   crear, en esta particion. Si tiene usted varios discos duros puede crear
   particiones para que FreeBSD las use en todos ellos o en algunos nada mas.
   Al instalar FreeBSD debe usar al menos una particion. Puede usar una
   particion vacia que haya preparado o puede usar tambien una particion que
   contenga datos que no desea conservar.

   Si esta usando todas las particiones de todos sus discos tendra que dejar
   libre una de ellas para FreeBSD usando las herramientas del otro sistema
   operativo que este usando (por ejemplo fdisk en DOS o en Windows(R)).

   Si tiene una particion sobrante puede usarla, pero puede verse en la
   necesidad de reducir una o mas de las particiones que esta usando.

   Una instalacion minima de FreeBSD cabri en solo 100 MB de disco pero tenga
   en cuenta que apenas quedaria espacio para los ficheros que quiera crear.
   Un minimo mas realista seria de 250 MB si no pretende usar entorno grafico
   y 350 MB o mas si quiere usar un interfaz grafico de usuario. Si quiere
   instalar gran cantidad de software para usarlo en FreeBSD sin duda
   necesitara mas espacio.

   Para ello puede usar herramientas comerciales como PartitionMagic(R) o
   libres como GParted para redimensionar sus particiones y hacer sitio para
   FreeBSD. El directorio tools directory del CDROM de instalacion contiene
   dos herramientas libres con las que puede hacer hacer esta redimension:
   FIPS y PResizer. En el mismo directorio encontrara documentacion de ambas.
   FIPS, PResizer y PartitionMagic(R) pueden redimensionar particiones FAT16
   y FAT32, que pueden encontrarse desde MS-DOS(R) hasta Windows(R) ME. Tanto
   PartitionMagic(R) como GParted funcionan tambien en particiones NTFS.
   GParted forma parte de diversas distribuciones de <<Live CD>> de Linux,
   como SystemRescueCD.

   Hay informes de problemas redimensionando particiones de Microsoft(R)
   Vista. Le recomendamos tener a mano un disco de instalacion de Vista
   cuando intente hacer esto. Lo dicho para cualquier otra tarea de
   mantenimiento de discos es valido aqui: tenga una copia de seguridad
   fiable y reciente a mano.

  Aviso:

   El uso incorrecto de estas herramientas puede borrar datos de su disco
   duro. Recuerde, asegurese de disponer de copias de seguridad recientes y
   utilizables antes de usarlas.

   Ejemplo 2.1. Uso de una particion sin cambiar nada

   Supongamos que tiene una maquina con un solo disco de 4 GB que ya tiene
   una version de Windows(R) instalada y que ese disco esta dividido en dos
   unidades, C: y D:, cada una de las cuales tiene un tamano de 2 GB. Tiene
   1 GB de datos en C: y 0.5 GB de datos en D:.

   Esto significa que su disco duro tiene dos particiones, una por cada letra
   de unidad. Copie todos sus datos de D: en C:; de este modo vaciara la
   segunda particio y podra usarla con FreeBSD.

   Ejemplo 2.2. Reducir una particion existente

   Suponga que tiene una maquina con un solo disco de 4 GB que contiene una
   version de Windows(R) instalada. Cuando instalo Windows(R) creo una gran
   particion, lo que le dio como resultado una unidad C: de 4 GB. Esta usando
   1.5 GB de espacio y quiere que FreeBSD tenga 2 GB de espacio.

   Para poder instalar FreeBSD tendra que realizar una de las siguientes
   tareas:

    1. Haga una copia de sus datos de Windows(R) y despues reinstale
       Windows(R), eligiendo una particion de 2 GB en el momento de la
       instalacion.

    2. Utilice alguna herramienta del estilo de PartitionMagic(R) que se han
       descrito antes para reducir el tamano de su particion de Windows(R).

    2.3.3.2. Estructura de discos en Alpha

   Tendra que dedicar un disco de su sistema para usar FreeBSD puesto que de
   momento es imposible compartir un disco con otro sistema operativo.
   Dependiendo de la la maquina Alpha que tenga el disco podra ser SCSI o IDE
   en la medida en que sea posible arrancar desde tales discos.

   Siguiendo las normas de los manuales de Digital / Compaq todos los datos
   suministrados a SRM se muestran en mayusculas. SRM no distingue entre
   mayusculas y minusculas.

   Use SHOW DEVICE en la consola de SRM para saber que tipo de discos hay en
   su sistema:

 >>>SHOW DEVICE
 dka0.0.0.4.0               DKA0           TOSHIBA CD-ROM XM-57  3476
 dkc0.0.0.1009.0            DKC0                       RZ1BB-BS  0658
 dkc100.1.0.1009.0          DKC100             SEAGATE ST34501W  0015
 dva0.0.0.0.1               DVA0
 ewa0.0.0.3.0               EWA0              00-00-F8-75-6D-01
 pkc0.7.0.1009.0            PKC0                  SCSI Bus ID 7  5.27
 pqa0.0.0.4.0               PQA0                       PCI EIDE
 pqb0.0.1.4.0               PQB0                       PCI EIDE

   Este ejemplo es de una Digital Personal Workstation 433au y muestra tres
   discos instalados en el sistema. El primer disco es una unidad CDROM
   llamada DKA0 y los otros dos reciben los nombres de DKC0 y DKC100
   respectivamente.

   Los discos con nombres tipo DKx son discos SCSI. Por ejemplo DKA100 se
   refiere a un disco SCSI con el <<target ID 1>> en el primer bus SCSI (A),
   mientras que DKC300 es un disco SCSI con un ID 3 en el tercer bus SCSI
   (C). Los nombres de dispositivo PKx son para adaptadores de bus SCSI. Como
   hemos visto en la salida de SHOW DEVICE las unidades CDROM SCSI son
   consideradas iguales a otros discos duros SCSI.

   Los discos IDE tienen nombres similares a DQx, mientras que PQx es la
   controladora IDE asociada.

  2.3.4. Recopile los datos de la configuracion de la red

   Si pretende conectarse a alguna red durante la instalacion de FreeBSD (por
   ejemplo si pretende hacerlo desde un sitio FTP o mediante un servidor NFS)
   tendra que conocer la configuracion de su red. Durante la instalacion se
   le pediran esos datos para que FreeBSD pueda conectarse a la red y
   realizar la instalacion.

    2.3.4.1. Conexion a una red Ethernet o a un modem Cable/DSL

   Necesitara la siguiente informacion si va a conectarse a una red Ethernet
   o si tiene una conexion a Internet a traves de una adaptador Ethernet via
   cable o DSL:

    1. Direccion IP

    2. Direccion IP de la pasarela (<<gateway>>, <<puerta de enlace>>)

    3. Nombre del sistema (<<hostname>>)

    4. Direccion IP del servidor DNS

    5. Mascara de subred

   Si no conoce estos datos pongase en contacto con su administrador de
   sistemas o con su proveedor de servicios. Es que le digan que tal
   informacion se asigna automaticamente mediante DHCP. Si es asi, anotelo.

    2.3.4.2. Conexion mediante modem

   Si usted se conecta con su ISP mediante un modem tradicional sigue
   pudiendo instalar FreeBSD a traves de Internet; el problema es que tardara
   mucho mas que por otros medios.

   Necesitara saber:

    1. El numero de telefono de su ISP a traves del que accedera a Internet

    2. El COM: el puerto al que esta conectado su modem

    3. Su nombre de usuario y su contrasena de acceso a Internet

  2.3.5. Consulte <<FreeBSD Errata>>

   A pesar de que el proyecto FreeBSD hace todo lo humanamente posible para
   asegurarse de que cada <<release>> de FreeBSD es todo lo estable posible a
   veces algun error logra entrar en escena. En contadisimas ocasiones esos
   errores llegan a afectar al proceso de instalacion. Cuando esos errores
   son ubicados y corregidos aparecen en lo que llamamos la FreeBSD Errata,
   que encontrara en el sitio web de FreeBSD. Deberia consultar este texto
   antes de la instalacion para asegurarse de que no hay problemas de ultima
   hora de los que deba preocuparse.

   Tiene informacion sobre las <<releases>>, incluyendo la <<errata>> de cada
   una de ellas, en la seccion de informacion de <<releases>> del sitio web
   de FreeBSD.

  2.3.6. Obtencion de los ficheros de instalacion de FreeBSD

   El proceso de instalacion de FreeBSD permite instalar FreeBSD desde
   ficheros ubicados en cualquiera de los siguientes sitios:

   Medios locales
     * Un CDROM o DVD

     * Una particion DOS en la propia computadora

     * Una cinta SCSI o QIC

     * Discos floppy

   Red
     * Un sitio FTP, saliendo a traves de un cortafuegos o usando un proxy
       HTTP si fuera necesario

     * Un servidor NFS

     * Una conexion serie o a traves de una cable paralelo

   Si ha adquirido FreeBSD en CD o DVD ya tiene todo lo que necesitara, puede
   pasar a la siguiente seccion: (Seccion 2.3.7, "Preparacion del medio de
   arranque").

   Si no dispone de los ficheros de instalacion de FreeBSD deberia consultar
   la Seccion 2.13, "Como preparar su propio medio de instalacion", donde se
   explica como preparar la instalacion de FreeBSD desde cualquiera de los
   medios listados anteriormente. Tras leer esa seccion puede volver aqui y
   leer la Seccion 2.3.7, "Preparacion del medio de arranque".

  2.3.7. Preparacion del medio de arranque

   El proceso de instalacion de FreeBSD comienza por arrancar su sistema
   mediante el instalador de FreeBSD: no es un programa que pueda ejecutar
   desde otro sistema operativo. Su sistema suele arrancar usando el sistema
   operativo que esta instalado en su disco duro pero puede tambien ser
   configurado para que lo haga desde un floppy <<arrancable>>. Las
   computadoras mas modernas pueden tambien arrancar desde un CDROM
   introducido en la unidad CDROM.

  Sugerencia:

   Si tiene FreeBSD en CDROM o DVD (por haberlo comprado o haberlo preparado
   por usted) y su sistema puede arracar desde CDROM o DVD (suele ser una
   opcion de BIOS llamada <<Boot Order>> o algo similar) puede saltarse esta
   seccion. Las imagenes de CDROM o DVD de FreeBSD permiten arrancar desde
   ellas y pueden emplearse para instalar FreeBSD sin ninguna preparacion
   especial.

   Siga estos pasos para crear las imagenes que le permitiran arrancar desde
   floppy:

    1. Consiga las imagenes de arranque desde floppy

       Los discos de arranque se encuentran en el directorio floppies/ del
       medio de instalacion o pueden descargarse desde el directorio
       correspondiente de
       ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/<arch>/<version>-RELEASE/floppies/.
       Reemplace <arch> y <version> con la arquitectura y la version de
       FreeBSD que quiera instalar. Por ejemplo, las imagenes de arranque
       desde floppy para FreeBSD 11.1-RELEASE para i386(TM) estan en from
       ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/11.1-RELEASE/floppies/.

       Las imagenes de floppy tienen la extension .flp. El directorio
       floppies/ contiene diferentes imagenes y las que usted necesitara
       dependeran de la version de FreeBSD que vaya a instalar y, en algunos
       casos, del hardware en el que lo va a instalar. En la mayoria de de
       los casos solamente usara dos ficheros: kern.flp y mfsroot.flp. La
       instalacion en algunos sistemas concretos requerira controladores de
       dispositivo adicionales, que se encuentran en la imagen drivers.flp.
       Consulte README.TXT en el propio directorio, ahi encontrara la
       informacion mas reciente sobre las imagenes.

  Importante:

       Su programa de FTP debe usar modo binario para descargar las imagenes.
       Algunos navegadores web suelen usar el modo texto ( o ASCII). He aqui
       lo primero a comprobar si no puede arrancar desde los disquetes que ha
       creado.

    2. Preparacion de los discos floppy

       Tendra que preperar un disquete por cada imagen que descargue. Es
       imprescindible que esos discos carezcan de errores. La forma mas
       sencilla de asegurarlo es formatearlos usted. No confie en disquetes
       preformateados. La herramienta de formateo de Windows(R) no le
       advertira del hallazgo de bloques defectuosos, si encuentra alguno
       sencillamente lo marcara como <<defectuoso>> y lo ignorara. Le
       recomendamos que use disquetes nuevos si decide usar este
       procedimiento de instalacion.

  Importante:

       Si instenta instalar FreeBSD y el programa de instalacion falla, se
       queda congelado o sucede alguna otra catastrofe uno de las primeras
       cosas de las que sospechar son los disquetes. Vuelque los ficheros de
       imagen en discos nuevos e intentelo de nuevo.

    3. Escriba los ficheros de imagen en discos floppy (<< disquetes>>)

       Los ficheros .flp no son ficheros normales que puedan copiarse a
       disco. Son imagenes del contenido completo de los discos. Esto
       significa que no puede simplemente copiar esos ficheros de un disco a
       otro. Debe usar herramientas especializadas para escribir esas
       imagenes directamente al disco correspondiente.

       Si va a crear los disquetes de arranque en un sistema en el que se
       esta ejecutando MS-DOS(R)/Windows(R) utilice la herramienta fdimage.

       Si las imagenes estan en el CDROM y su CDROM es la unidad E: ejecute
       lo siguiente:

 E:\> tools\fdimage floppies\kern.flp A:

       Repita el proceso con cada fichero .flp reemplazando cada vez el disco
       y recuerde etiquetarlos con el nombre del fichero que ha copiado en
       cada uno. Modifique la linea del comando donde sea necesario,
       adaptandola al lugar donde tenga usted los ficheros .flp. Puede
       descargar fdimage desde el directorio tools del sitio FTP de FreeBSD.

       Si va a crear los disquetes en un sistema UNIX(R) (por ejemplo otro
       sistema FreeBSD) puede utilizar dd(1) para volcar las imagenes a los
       discos. En FreeBSD puede ejecutar algo como:

 # dd if=kern.flp of=/dev/fd0

       En FreeBSD /dev/fd0 es la primera unidad de disquetes (la unidad A:).
       /dev/fd1 seria la unidad B: y asi sucesivamente. Otras versiones de
       UNIX(R) pueden asignar nombres diferentes a las unidades de disquetes;
       consulte la documentacion de su sistema.

   Ya podemos instalar instalar FreeBSD.

2.4. Inicio de la instalacion

  Importante:

   La instalacion no efectua ningun cambio en su disco o discos duros hasta
   la aparicion del siguiente mensaje:

 Last Chance: Are you SURE you want continue the installation?

 If you're running this on a disk with data you wish to save then WE
 STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!

 We can take no responsibility for lost disk contents!

   Es decir:

 Ultima oportunidad: ?Seguro que quiere seguir adelante con la instalacion?

 !Si esta ejecutando este programa en un disco que contenga datos
 que quiera conservar LE RECOMENDAMOS ENCARECIDAMENTE QUE HAGA
 COPIAS DE SEGURIDAD FIABLES antes de proseguir!

 !No podemos responsabilizarnos de datos perdidos!

   El proceso de instalacion puede abandonarse en cualquier momento antes de
   la advertencia final sin efectuar cambios en el contenido del disco duro.
   Si advierte que ha configurado algo de forma incorrecta basta con que
   apague su sistema y no estropeara nada.

  2.4.1. El arranque

    2.4.1.1. El arranque en i386(TM)

    1. Comience con su sistema apagado.

    2. Arranque el sistema. Durante el arranque deberi mostrarse la opcion
       para entrar en la BIOS, normalmente mediante las teclas F2, F10, Del,
       o Alt+S. Utilice la tecla o combinacion de las mismas que se le
       indique en pantalla. En algunos casos el sistema puede mostrar un
       grafico durante el arranque. Pulsar Esc suele disminuir en esos casos
       el tamano del grafico y le permitira ver los mensajes del arranque.

    3. Encuentre el parametro que controla desde que dispositivos arranca el
       sistema. Normalmente se llama <<Boot Order>> y suele presentarse como
       una lista de dispositivos, como Floppy, CDROM, First Hard Disk, etc.

       Si necesita disquetes de arranque asegurese de que selecciona la
       unidad correspondiente. Si va a arrancar desde CDROM, seleccione la
       unidad CDROM. En caso de duda consulte el manual que venia con su
       computadora y/o el de su placa base.

       Haga los cambios necesarios, guarde los cambios y salga. El sistema
       deberia reiniciarse.

    4. Si ha elegido arrancar desde disquete, tal y como se describe en
       Seccion 2.3.7, "Preparacion del medio de arranque", uno de ellos sera
       el primer disco de arranque, probablemente el que contiene kern.flp.
       Introduzca ese disco en su unidad de disquetes.

       Si va a arrancar desde CDROM tendra que arrancar el sistema e
       introducir el CDROM en cuanto tenga ocasion.

       Si su sistema arranca normalmente y carga el sistema operativo que ya
       esta instalado puede ocurrir alguna de estas cosas:

         1. Los discos no se introdujeron lo suficientemente pronto en el
            proceso de arranque. Dejelos insertados y reinicie su sistema.

         2. Los cambios que hizo en la BIOS no han funcionado. Deberia
            repetir los pasos previos hasta que de con la opcion correcta.

         3. Su BIOS en concreto no admite el arranque el arranque desde el
            medio que ha elegido.

    5. FreeBSD comenzara a arrancar. Si esta arrancando desde CDROM deberia
       ver algo parecido a esto (se ha omitido la informacion de numero de
       version):

 Verifying DMI Pool Data ........
 Boot from ATAPI CD-ROM :
  1. FD 2.88MB  System Type-(00)
 Uncompressing ... done

 BTX loader 1.00 BTX version is 1.01
 Console: internal video/keyboard
 BIOS drive A: is disk0
 BIOS drive B: is disk1
 BIOS drive C: is disk2
 BIOS drive D: is disk3
 BIOS 639kB/261120kB available memory

 FreeBSD/i386 bootstrap loader, Revision 0.8

 /kernel text=0x277391 data=0x3268c+0x332a8 |

 |
 Hit [Enter] to boot immediately, or any other key for command prompt.
 Booting [kernel] in 9 seconds... _

       Si arranca desde floppy vera algo parecido a esto (se ha omitido la
       informacion de numero de version):

 Verifying DMI Pool Data ........

 BTX loader 1.00  BTX version is 1.01
 Console: internal video/keyboard
 BIOS drive A: is disk0
 BIOS drive C: is disk1
 BIOS 639kB/261120kB available memory

 FreeBSD/i386 bootstrap loader, Revision 0.8

 /kernel text=0x277391 data=0x3268c+0x332a8 |

 Please insert MFS root floppy and press enter:

       Siga las instrucciones y extraiga el disco kern.flp disc, inserte el
       disco mfsroot.flp y pulse Intro.

    6. Tanto si arranca desde disquete como CDROM el proceso de arranque
       llegara a este punto:

 Hit [Enter] to boot immediately, or any other key for command prompt.
 Booting [kernel] in 9 seconds... _

       Dicho y hecho: espere diez segundos o pulse Enter. Esto lanzara el
       menu de configuracion del kernel.

    2.4.1.2. Arranque en Alpha

    1. Comience con su sistema apagado.

    2. Encienda su computadora y espera un mensaje de arranque en el monitor.

    3. Si va a arrancar desde disquetes, tal y como se describe en la
       Seccion 2.3.7, "Preparacion del medio de arranque", uno de ellos sera
       el primer disco de arranque, probablemente el que contiene kern.flp.
       Ponga este disco en la unidad de disquetes y escriba el siguiente
       comando para lanzar el arranque desde el disco (corrija el nombre de
       su unidad de disquetes si fuera necesario):

 >>>BOOT DVA0 -FLAGS '' -FILE ''

       Si va a arrancar desde CDROM introduzca el CDROM en la unidad y
       escriba el siguiente comando para iniciar la instalacion (corrija el
       nombre de la unidad correcta de CDROM si fuera necesario):

 >>>BOOT DKA0 -FLAGS '' -FILE ''

    4. FreeBSD comenzara a arrancar. Si esta arrancando desde disquete
       llegado un cierto punto vera usted este mensaje:

 Please insert MFS root floppy and press enter:

       Siga las instrucciones del programa de instalacion y retire el disco
       kern.flp, inserte el disco mfsroot.flpy pulse Intro.

    5. Tanto si arranco desde disquete como desde CDROM el proceso de
       arranque llegara a este punto:

 Hit [Enter] to boot immediately, or any other key for command prompt.
 Booting [kernel] in 9 seconds... _

       Dicho y hecho: Espere diez segundos o pulse Enter. Esto iniciara el
       menu de configuracion del kernel.

    2.4.1.3. Arranque en Sparc64(R)

   La mayoria de sistemas Sparc64(R) estan configurados para arrancar
   automaticamente desde disco. Si quiere instalar FreeBSD tendra que
   arrancar por red o desde un CDROM, lo que requiere que acceda a la PROM
   (OpenFirmware).

   Reinicie el sistema y espere hasta que aparezca el mensaje de arranque.
   Depende del modelo, pero deberia parecerse a este:

 Sun Blade 100 (UltraSPARC-IIe), Keyboard Present
 Copyright 1998-2001 Sun Microsystems, Inc.  All rights reserved.
 OpenBoot 4.2, 128 MB memory installed, Serial #51090132.
 Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.

   Si en este punto su sistema arranca desde el disco pulse L1+A o Stop+A, o
   envie unBREAK desde la consola serie serial console (usando, por ejemplo,
   ~# en tip(1) o cu(1)) para asi recuperar el prompt de PROM. Tiene este
   aspecto:

 ok     1
 ok {0} 2

   1 Este es el prompt que vera en sistemas con una sola CPU.                 
   2 Este prompt se usa en sistemas SMP; el digito indica el numero de la CPU 
     activa.                                                                  

   Ponga el CDROM dentro de la unidad y teclee boot cdrom en el prompt de la
   PROM.

  2.4.2. Revision de los resultados de la prueba de dispositivos

   Es posible revisar los ultimos cientos de lineas que se han mostrado en
   pantalla, pues se almacenan en un bufer con ese proposito.

   Pulse Bloq Despl (Scroll Lock) y ya puede revisar el bufer. Para moverse
   use las flechas o RePag y AvPag (PageUp y PageDown respectivamente). Pulse
   de nuevo Bloq Despl (Scroll Lock) cuando quiera salir del bufer.

   Pruebelo, revise el texto que ha generado el kernel al probar los
   dispositivos del sistema. Vera un texto muy similar al de la Figura 2.1,
   "Ejemplo de resultado de prueba de dispositivos", aunque en su caso
   concreto se mostraran los dispositivos que tenga su sistema.

   Figura 2.1. Ejemplo de resultado de prueba de dispositivos

 avail memory = 253050880 (247120K bytes)
 Preloaded elf kernel "kernel" at 0xc0817000.
 Preloaded mfs_root "/mfsroot" at 0xc0817084.
 md0: Preloaded image </mfsroot> 4423680 bytes at 0xc03ddcd4

 md1: Malloc disk
 Using $PIR table, 4 entries at 0xc00fde60
 npx0: <math processor> on motherboard
 npx0: INT 16 interface
 pcib0: <Host to PCI bridge> on motherboard
 pci0: <PCI bus> on pcib0
 pcib1:<VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
 pci1: <PCI bus> on pcib1
 pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
 isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
 isa0: <iSA bus> on isab0
 atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
 ata0: at 0x1f0 irq 14 on atapci0
 ata1: at 0x170 irq 15 on atapci0
 uhci0 <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci
 0
 usb0: <VIA 83572 USB controller> on uhci0
 usb0: USB revision 1.0
 uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr1
 uhub0: 2 ports with 2 removable, self powered
 pci0: <unknown card> (vendor=0x1106, dev=0x3040) at 7.3
 dc0: <ADMtek AN985 10/100BaseTX> port 0xe800-0xe8ff mem 0xdb000000-0xeb0003ff ir
 q 11 at device 8.0 on pci0
 dc0: Ethernet address: 00:04:5a:74:6b:b5
 miibus0: <MII bus> on dc0
 ukphy0: <Generic IEEE 802.3u media interface> on miibus0
 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
 ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xec00-0xec1f irq 9 at device 10.
 0 on pci0
 ed0 address 52:54:05:de:73:1b, type NE2000 (16 bit)
 isa0: too many dependant configs (8)
 isa0: unexpected small tag 14
 orm0: <Option ROM> at iomem 0xc0000-0xc7fff on isa0
 fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq2 on isa0
 fdc0: FIFO enabled, 8 bytes threshold
 fd0: <1440-KB 3.5" drive> on fdc0 drive 0
 atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
 atkbd0: <AT Keyboard> flags 0x1 irq1 on atkbdc0
 kbd0 at atkbd0
 psm0: <PS/2 Mouse> irq 12 on atkbdc0
 psm0: model Generic PS/@ mouse, device ID 0
 vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
 sc0: <System console> at flags 0x100 on isa0
 sc0: VGA <16 virtual consoles, flags=0x300>
 sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
 sio0: type 16550A
 sio1 at port 0x2f8-0x2ff irq 3 on isa0
 sio1: type 16550A
 ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
 pppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
 ppc0: FIFO with 16/16/15 bytes threshold
 plip0: <PLIP network interface> on ppbus0
 ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master UDMA33
 acd0: CD-RW <LITE-ON LTR-1210B> at ata1-slave PIO4
 Mounting root from ufs:/dev/md0c
 /stand/sysinstall running as init on vty0

   Compruebe cuidadosamente que FreeBSD haya encontrado todos los
   dispositivos que debe encontrar. Si no se lista algun dispositivo
   significa que FreeBSD no lo ha encontrado. Un kernel personalizado le
   permitira agregar al sistema el soporte de dispositivos que no aparecen en
   el kernelGENERIC, que suele ser el caso de algunas tarjetas de sonido.

   En FreeBSD 6.2 y versiones siguientes vera tras la prueba de dispositivos
   vera lo que muestra la Figura 2.2, "Menu de seleccion de pais". Utilice
   las flechas del teclado para elegir pais, region o grupo. Cuando acabe
   pulse Intro, con lo que habra elegido pais y esquema de teclado. En
   cualquier momento puede salir de easily. It is also easy to exit the
   sysinstall y volver a empezar.

   Figura 2.2. Menu de seleccion de pais
   Menu de seleccion de pais
   Figura 2.3. Salir de Sysinstall
   Salir de Sysinstall

   Para salir de sysinstall utilice las flechas del teclado para seleccionar
   Exit Install en el menu de la pantalla principal de instalacion. Aparecera
   el siguiente mensaje:

                       User Confirmation Requested
          Are you sure you wish to exit? The system will reboot
            (be sure to remove any floppies/CDs/DVDs from the drives).

                             [ Yes ]    No

   Si pulsa [ Yes ] y no retira el CDROM durante el reinicio el programa de
   instalacion comenzara de nuevo.

   Si esta arrancando desde disquetes tendra que retirar el floppy boot.flp
   antes de reiniciar.

2.5. ?Que es sysinstall?

   sysinstall es la aplicacion que el Proyecto FreeBSD creo para la
   instalacion del sistema. Esta orientada a consola y consta de diversos
   menus y pantallas que podra usar para configurar y ejecutar el proceso de
   instalacion.

   El sistema de menus de sysinstall se controla mediante las flechas del
   teclado, Intro,el tabulador), Espacio y otras teclas. Tiene una
   descripcion detallada de todas esas teclas y que es lo que hacen en la
   informacion de uso de sysinstall.

   Si quiere consultarla seleccione Usage y asegurese de que el boton
   [Select] este seleccionado (como se ven en la Figura 2.4, "Seleccion de
   <<Usage>> en el menu principal de sysinstall") y pulse Intro.

   Apareceran las instrucciones de uso del sistema de menus. Una vez
   revisadas pulse Enter y volvera al menu principal.

   Figura 2.4. Seleccion de <<Usage>> en el menu principal de sysinstall
   Seleccion de <<Usage>> en el menu principal de sysinstall

  2.5.1. Seleccion del menu de documentacion

   Una vez en el menu principal seleccione Doc con las flechas del teclado y
   pulse Enter.

   Figura 2.5. Seleccion del menu de documentacion
   Seleccion del menu de documentacion

   Esto mostrara el menu de documentacion.

   Figura 2.6. El menu de documentacion de sysinstall
   El menu de documentacion de sysinstall

   Es muy importante qeu lea la documentacion de sysinstall.

   Si quiere consultar un documento seleccionelo con las flechas y pulse
   Intro. Cuando acabe pulse de nuevo Intro y volvera al menu de
   documentacion.

   Si desea regresar al menu principal de la instalacion seleccione Exit con
   las flechas y pulse Intro.

  2.5.2. Seleccion del menu de esquemas de teclado

   Si quiere cambiar el esquema de teclado seleccione el que Keymap y pulse
   Enter. Tendra que hacer esto si su teclado no es el estandar en los EEUU.

   Figura 2.7. Menu principal de sysinstall
   Menu principal de sysinstall

   La seleccion de un esquema de teclado se hace del siguiente modo:
   seleccione uno de la lista mediante las flechas arriba/abajo y pulse
   Espacio. Si pulsa Espacio otra vez anulara la seleccion. Una vez que tenga
   clara su eleccion use las flechas para seleccionar [ OK ] y pulse Intro.

   En esta pantalla solamente se muestra una parte de la lista. Seleccione
   [ Cancel ] usando el tabulador si ha decido seguir usando el esquema de
   teclado por omision y regresar al menu principal de instalacion.

   Figura 2.8. Menu de esquemas de teclado de sysinstall
   Menu de esquemas de teclado de sysinstall

  2.5.3. Pantalla de opciones de instalacion

   Seleccione Options y pulse Intro.

   Figura 2.9. Menu principal de sysinstall
   Menu principal de sysinstall
   Figura 2.10. Opciones de sysinstall
   Opciones de sysinstall

   Los valores por omision deberian bastar para la mayoria de usuarios. El
   numero de <<release>> variara segun sea la version que se esta instalando.

   La descripcion del elemento seleccionado aparecera resaltada en azul en la
   parte baja de la pantalla. Observe que una de las opciones es Use
   Defaults, que devuelve todos los valores a los asignados por omision al
   principio del proceso de instalacion.

   Si pulsa F1 podra leer la pantalla de ayuda de las diversas opciones.

   Si pulsa Q volvera al menu principal de la instalacion.

  2.5.4. Comenzar una instalacion estandar

   La instalacion estandar (Standard) es la opcion mas adecuada para aquellas
   personas con poca o ninguna experiencia con UNIX(R) o FreeBSD. Utilice las
   flechas para seleccionar Standard y pulse Intro; a partir de ahi comenzara
   la instalacion.

   Figura 2.11. Comenzar una instalacion estandar
   Comenzar una instalacion estandar

2.6. Asignacion de espacio en disco

   Lo primero que tiene que hacer es asignar espacio en disco a FreeBSD para
   que sysinstall lo pueda dejar listo para su uso. Para ello debe saber como
   espera FreeBSD encontrar la informacion en el disco.

  2.6.1. Numeracion de unidades desde el punto de vista de la BIOS

   Antes de instalar y configurar FreeBSD en su sistema hay una cosa mas de
   la que ocuparse, especialmente si tiene mas de un disco duro.

   La BIOS es capz de abstraer el orden normal de los discos si hablamos de
   un PC en el que se esta ejecutando un sistema operativo "BIOS-dependiente"
   como MS-DOS(R) o Microsoft(R) Windows(R), que admiten esos cambios sin
   problemas. Tal cosa permite al usuario arrancar desde un disco duro
   distinto del llamado <<maestro principal>>. Esto viene muy bien a los
   usuarios que tienen el <<backup>> del sistema mas barato que existe,
   comprar un disco duro identico al primero y copiar periodicamente la
   primera unidad en la segunda mediante Ghost o XCOPY. De este modo si la
   primera unidad falla, sufre el ataque de un virus o sufre las
   consecuencias de un fallo del sistema operativo solo hay que decirle a la
   BIOS que interpole logicamente las unidades. Es como intercambiar las
   conexiones de los discos sin tener que abrir la caja del sistema.

   en sistemas mas caros a veces pueden encontrarse controladoras SCSI que
   incorporan extensiones BIOS, que permiten organizar hasta siete unidades
   SCSI de un modo muy similar.

   Cualquiera que este acostumbrado a usar las tecnicas descritas se llevara
   una sorpresa al intentar usarlas en FreeBSD. FreeBSD no usa la BIOS y no
   tiene en cuenta en absoluto la <<notacion de unidades logicas desde el
   punto de vista de la BIOS>>. Esto puede dar lugar a situaciones bastante
   chocantes, especialmente cuando las unidades son fisicamente identicas en
   geometria y han sido creadas como clones de datos la una de la otra.

   Si va a usar FreeBSD recuerde siempre devolver a la BIOS a los valores de
   numeracion <<natural>> antes de la instalacion y dejarlos asi. Si tiene
   que intercambiar unidades hagalo, pero a la vieja usanza: abra la caja,
   toque los <<jumpers>> y los cables todo lo que sea menester.

   Pedro decide dedicar una vieja maquina <<Wintel>> para prepararle un
   sistema FreeBSD a Pablo. Pedro le instala una sola unidad SCSI como
   <<unidad SCSI 0>> e instala FreeBSD en ella.

   Pablo comienza a usar el sistema pero a los pocos dias advierte que esa
   vieja unidad SCSI esta mostrando numerosos errores logicos, asi que
   informa del hecho a Pedro.

   Dias despues Pedro decide solucionar el problema; consigue un disco
   identico al que instalo a Pablo. Le pasa un chequeo de superficie que da
   resultados satisfactorios, asi que instala este disco como <<unidad SCSI
   4>> y hace una copia binaria de la unidad 0 (el primer disco) a la recien
   instalada unidad 4. Una vez que el nuevo disco esta instalado Pedro decide
   que hay que empezar a usarlo, asi que configura la BIOS SCSI para
   reorganizar las unidades de disco para que el sistema arranque desde la
   unidad SCSI 4. FreeBSD arranca desde dicha unidad y todo funciona
   perfectamente.

   Pablo sigue trabajando varios dias y no pasa mucho tiempo antes de que
   Pedro y Pablo decidan que ya es hora de meterse en una nueva aventura:
   actualizarse a la nueva versin de FreeBSD. Bill retira la unidad SCSI 0 de
   la maquina porque le parece poco de fiar y la reemplaza por un disco que
   obtiene de su en apariencia inagotable trastero. Pedro instala la ultima
   version de FreeBSD en la nueva unidad SCSI mediante los disquetes FTP
   magicos que Pablo ha bajado de Internet. La instalacion se ejecuta sin
   problemas.

   Pablo utiliza la nueva version de FreeBSD durante unos dias y comprueba
   que en efecto es lo bastante buena como para usarla en el departamento de
   ingenieria. Ha llegado, por tanto, el momento de copiar los datos que
   tiene en la version anterior de FreeBSD a su nuevo alojamiento. Pablo
   monta la unidad SCSI 4 (la ultima que instalo con la version anterior de
   FreeBSD). Pablo queda consternado al comprobar que en la unidad SCSI 4 no
   hay ni rastro de sus preciados datos.

   ?Donde estan los datos?

   Cuando Pedro hizo la copia binaria de la unidad SCSI 0 en la unidad SCSI
   4, la unidad se convirtio en el <<el nuevo clon>>. Cuando Pedro
   reconfiguro la BIOS SCSI para poder arrancar desde la unidad SCSI 4 tan
   solo estaba enganandose a si mismo puesto que FreeBSD seguia arrancando
   desde la unidad SCSI 0. Al hacer tal cambio en la BIOS causamos que parte
   del codigo de arranque y del cargador del sistema se copie de una a otra
   unidad pero en cuanto los controladores del kernel de FreeBSD toman el
   control de la situacion el esquema de nomenclatura de unidades de la BIOS
   es desestimado y FreeBSD recupera el esquema normal de nomenclatura. En
   nuestro ejemplo el sistema sigue funcionando desde la unidad SCSI 0 y ahi
   estan todos los datos de Pablo, no en la unidad SCSI 4. El hecho de que
   pareciera que el sistema estaba funcionando en la unidad SCSI 4 era un
   producto de la imaginacion humana.

   Estamos encantados de decir que ni un solo byte fue herido o maltratado
   durante el descubrimiento de este fenomeno. La vieja unidad SCSI 0 fue
   recuperada del monton de discos caidos en acto de servicio y fue posible
   devolver todo el trabajo de Pablo a su legitimo dueno. Por si fuera poco,
   ahora Pedro sabe con certeza que es capaz de contar hasta cero.

   En el ejemplo se han usado unidades SCSI pero los conceptos pueden
   aplicarse perfectamente a unidades IDE.

  2.6.2. Creacion de <<slices>> con FDisk

  Nota:

   Aun no ha hecho modificaciones en su disco duro. Si cree que ha cometido
   algun error y quiere comenzar de nuevo puede hacerlo, salga de los menus
   de sysinstall e intentelo de nuevo o pulse U para ejecutar la opcion Undo
   (deshacer). Si se pierde o no sabe como salir siempre puede apagar su
   sistema.

   Si ha elegido iniciar una instalacion estandar sysinstall le mostrara el
   siguiente mensaje:

                                  Message
  In the next menu, you will need to set up a DOS-style ("fdisk")
  partitioning scheme for your hard disk. If you simply wish to devote
  all disk space to FreeBSD (overwriting anything else that might be on
  the disk(s) selected) then use the (A)ll command to select the default
  partitioning scheme followed by a (Q)uit. If you wish to allocate only
  free space to FreeBSD, move to a partition marked "unused" and use the
  (C)reate command.
                                 [  OK  ]

                       [ Press enter or space ]

   Es decir:

                                  Mensaje
  En el siguiente menu tendra que configurar un esquema de particionado
  estilo DOS ("fdisk") en su disco duro.  Si quiere dedicar todo el
  espacio de disco a FreeBSD (cosa que sobreescribira cualquier cosa
  que contuviera el/los disco/s) use el comando (A)ll (Todo) para
  seleccionar el esquema de particiones por defecto y luego pulse
  (Q)uit (Salir).  Si quiere asignar a FreeBSD solamente el espacio
  libre en la unidad elija una particion que figure marcada como
  "unused" (sin usar) y ejecute el comando (C)reate (Crear).
                                 [  OK  ]

                       [ Pulse Intro o Espacio ]

   Pulse Intro tal y como se le dice. Se le mostrara una lista con todas las
   unidades de disco duro que el kernel ha econtrado al hacer el chequeo del
   sistema. La Figura 2.12, "Elija en que unidad usar FDisk" muestra un
   ejemplo de un sistema con dos discos IDE. Reciben los nombres de ad0 y
   ad2.

   Figura 2.12. Elija en que unidad usar FDisk
   Elija en que unidad usar FDisk

   Quizas este preguntandose por que ad1 no aparece por ningun lado. ?Acaso
   hemos pasado algo por alto?

   Veamos que ocurriria si tuviera usted dos discos duros IDE, uno como
   maestro de la primera controladora IDE y el otro como maestro en la
   segunda controladora IDE. Si FreeBSD asignara numeros de unidad en el
   orden en el que las encuentra en el ejemplo habriamos visto ad0 y ad1 y
   todo funcionaria sin mayor problema.

   Pero si tuviera usted que anadir un tercer disco, digamos como esclavo de
   la primera controladora IDE, tendria que llamarse ad1 y el disco que antes
   era ad1 pasaria a llamarse ad2. Los nombres de dispositivo (como por
   ejemplo ad1s1a) se usan para ubicar sistemas de ficheros, asi que podria
   encontrarse con que alguno de sus sistemas de ficheros no esta donde
   debiera y tendria que modificar la configuracion de su FreeBSD.

   Para evitar este problema el kernel puede configurarse para asignar
   nombres a discos IDE basandose en donde estan en lugar de hacerlo por el
   orden en el que los encuentra. Segun dicho esquema el disco maestro de la
   segunda contoladora IDE siempre sera ad2, incluso si no existen
   dispositivos ad0 o ad1.

   Esta es la configuracion por omision que incorpora el kernel de FreeBSD,
   por lo que muestra las unidades ad0 y ad2. La maquina en la que se tomaron
   las capturas de pantalla tiene sendos discos IDE en ambos canales maestros
   de las dos controladoras y carece de discos en los canales esclavos.

   Seleccione el disco en el que desea instalar FreeBSD y pulse [ OK ]. FDisk
   arrancara y le mostrara una pantalla similar a la que muestra la
   Figura 2.13, "Un ejemplo de particionamiento tipico con FDisk".

   La pantalla de FDisk se divide en tres partes.

   La primera parte, que ocupa las dos primeras lineas de la pantalla,
   muestra los detalles del disco que seleccionemos, el nombre que FreeBSD le
   da, la geometria del disco y el tamano total del disco.

   La segunda parte muestra las <<slices>> que haya en el disco, donde
   comienzan y acaban, cu'l es su tamano, que nombre les da FreeBSD, su
   descripcion y subtipo. Este ejemplo muestra dos pequenas <<slices>> sin
   usar; las <<slices>> (del ingles <<rebanadas>>) son un tipo de esquema
   estructural de los discos de PC. Tambien muestra una gran <<slice>> FAT,
   que casi con total seguridad aparecera como C: en MS-DOS(R) / Windows(R),
   y una <<slice>> extendida, que podria contener otras letras de unidad de
   MS-DOS(R) / Windows(R).

   La tercera parte muestra las ordenes que pueden usarse en FDisk.

   Figura 2.13. Un ejemplo de particionamiento tipico con FDisk
   Un ejemplo de particionamiento tipico con FDisk

   Lo que deba hacer a partir de ahora dependera mucho de la forma en la que
   quiera distribuir su disco.

   Si desea usar FreeBSD en el resto del disco (lo que implica borrar todos
   los datos que pudiera haber en el disco una vez que le confirme a
   sysinstall que desea seguir adelante con la instalacion) pulse A, que
   equivale a la opcion Use Entire Disk (Utilizar el disco integro). Las
   <<slices>> que existieran se borraran y seran reemplazadas por un pequeno
   area de disco marcado como sin usar (otro recurso de la estructura de
   disco de los PC) y tras el una gran <<slice>> destinada a FreeBSD. Ahora
   marque la particion FreeBSD que acaba de crear como arrancable: pulse S.
   La pantalla que vera ha de ser muy similar a la Figura 2.14, "Particion
   con FDisk usando el disco completo". Observe la A en la columna Flags:
   indica que la <<slice>> es activa y se arrancara desde ella.

   Si desea borrar una <<slice>> para hacer mas sitio a FreeBSD seleccionela
   mediante las flechas y pulse D. Despues pulse C y vera un mensaje en el
   que se le pedira el tamano de la <<slice>> que va a crear. Introduzca los
   datos apropiados y pulse Intro. El valor por defecto en esta pantalla es
   el de la <<slice>> mas grande que pueda crear en el disco, que deberia ser
   la mayor parte del disco que queda sin usar o el tamano del disco duro
   completo.

   Si ha hecho sitio para FreeBSD (quizas con una herramienta como
   PartitionMagic(R)) puede pulsar press C y crear una nueva <<slice>>. Vera
   de nuevo un mensaje en el que se le pedira que escriba el tamano de la
   <<slice>> que va a crear.

   Figura 2.14. Particion con FDisk usando el disco completo
   Particion con FDisk usando el disco completo

   Cuando acabe pulse Q. Sus cambios se guardaran en sysinstall, pero de
   momento no se guardaran en disco.

  2.6.3. Instalacion de un gestor de arranque

   Ha llegado el momento de instalar un gestor de arranque. Elija el gestor
   de arranque de FreeBSD si:

     * Tiene mas de un disco y ha instalado FreeBSD en cualquiera que no sea
       el primero.

     * Ha instalado FreeBSD codo con codo con otro sistema operativo y quiere
       poder elegir si arrancar FreeBSD o ese otro sistema operativo cuando
       arranque su sistema.

   Si FreeBSD va a ser el unico sistema operativo en el sistema y va a
   instalarlo en el primer disco duro elija el gestor estandar (que,
   obviamente, esta en la opcion Standard). Elija None (ninguno) si va a usar
   algun otro gestor de arranque que sea capaz de arrancar FreeBSD.

   Elija y pulse Intro.

   Figura 2.15. Menu de gestores de arranque de sysinstall
   Menu de gestores de arranque de sysinstall

   La pantalla de ayuda, que puede consultar en cualquier momento pulsando
   F1, puede serle de mucha ayuda con los problemas que puede encontrarse al
   intentar compartir un disco duro entre varios sistemas operativos.

  2.6.4. Creacion de <<slices>> en otra unidad.

   Si hay mas de una unidad de disco el programa de instalacion volvera a la
   pantalla <<Select Drives>> (<<seleccion de unidades>>) una vez elegido el
   gestor de arranque. Si quiere instalar FreeBSD en mas de un disco
   seleccione aqui ese otro disco y repita el proceso con las <<slices>>
   mediante FDisk.

  Importante:

   Si va a instalar FreeBSD en una unidad que no sea la primera tendra que
   instalar el gestor de arranque de FreeBSD en ambas unidades.

   Figura 2.16. Salir de la seleccion de unidad
   Salir de la seleccion de unidad

   El tabulador se usa para hacer pasar el cursor entre [ OK ], [ Cancel ].

   Pulse tabulador para pasar el cursor a [ OK ] y pulse Enter para proseguir
   con la instalacion.

  2.6.5. Creacion de particiones con Disklabel

   Tendra que crear particiones dentro de las <<slices>> que haya creado.
   Recuerde que cada particion esta asociada a una letra entre la a y la hy
   que las particiones b, c y d tienen significados heredados que tendra que
   respetar.

   Ciertas aplicaciones pueden optimizar su rendimiento de un esquema de
   particiones concreto, sobre todo si hace particiones repartidas en mas de
   un disco. Si embargo si esta es su primera instalacion de FreeBSD no
   necesita dedicarle demasiado tiempo a decidir como partir el disco duro.
   Es mucho mas importante que instale FreeBSD y empiece a aprender a usarlo.
   Siempre estaa tiempo de reinstalar FreeBSD y cambiar su esquema de
   particiones cuando este mas familiarizado con el sistema operativo.

   El siguiente esquema consta de cuatro particiones: una para la swap y tres
   para los sistemas de ficheros.

   Tabla 2.2. Estructura de particiones del primer disco

   Particion Sistema de     Tamano                  Descripcion               
              ficheros  
                                       Este es el sistema de ficheros raiz.   
                                       el resto de sistemas de ficheros se    
                                       montaran en algun punto de este        
                                       sistema raiz. 100 MB es un tamano      
                                       razonable para el. No es el mejor      
   a         /          512 MB         sitio para almacenar muchos datos y la 
                                       instalacion de FreeBSD escribira cerca 
                                       de 40 MB de datos en ella. El resto    
                                       del espacio es para datos temporales y 
                                       por si futuras versiones de FreeBSD    
                                       necesitan mas espacio en /.            
                                       Esta particion es el espacio de        
                                       memoria de intercambio (o <<swap>>)    
                                       del sistema. La eleccion de la         
                                       cantidad correcta de swap es casi un   
                                       arte en si mismo. Hay una regla basica 
                                       que es asignar a la swap el doble o el 
                                       triple de MB de los que haya en la     
                                       memoria fisica (RAM) del sistema.      
                                       Deberia tener al menos 64 MB de swap   
                                       asi que si tiene menos de 32 MB de RAM 
                                       asignele a su swap 64 MB.              
   b         N/A        2-3 x RAM                                             
                                       Si tiene mas de un disco puede poner   
                                       espacio swap en cada disco. FreeBSD    
                                       usara ambas swap con el resultado de   
                                       acelerar notablemente el intercambio   
                                       de paginas de memoria. Calcule el      
                                       total de swap que necesita (por        
                                       ejemplo 128 MB) y divida esa cantidad  
                                       por el numero de discos que tenga (por 
                                       ejemplo dos) y ya tiene la cantidad de 
                                       espacio que debe destinar a swap en    
                                       cada uno de sus discos. En nuestro     
                                       ejemplo 64 MB de swap por disco.       
                                       El directorio /var contiene ficheros   
                                       que estan en continuo cambio, como     
                                       <<logs>> y otros ficheros              
                                       administrativos. Muchos de esos        
                                       ficheros son una consecuencia o son de 
   e         /var       256 MB to      gran ayuda para el correcto            
                        1024 MB        funcionamiento diario de FreeBSD.      
                                       FreeBSD ubica dichos ficheros en ese   
                                       sistema de ficheros para optimizar el  
                                       acceso a los mismos sin afectar a      
                                       otros ficheros ni directorios que      
                                       tienen similar patron de accesos.      
                        Resto del      El resto de sus ficheros pueden        
   f         /usr       disco(al menos almacenarse en /usr y sus              
                        2 GB)          subdirectorios.                        

  Aviso:

   Los valores que se han mostrado son simples ejemplos y se recomienda su
   uso exclusivamente a usuarios experimentados. Recomendamos a los usuarios
   que utilicen la opcion Auto Defaults, que elegira unas proporciones
   adecuadas para el espacio que encuentre disponible.

   Si va a instalar FreeBSD en mas de un disco puede crear particiones el las
   demas <<slices>> que haya creado. La forma mas facil de hacerlo es creando
   dos particiones en cada disco, una para la swap y la otra para los
   sistemas de ficheros.

   Tabla 2.3. Esquema de particiones para varios discos

   Particion Sistema de     Tamano                   Descripcion              
              ficheros  
                                        Tal y como se ha explicado puede      
                                        repartir su espacio swap entre varios 
                                        discos. Aunque piense que la          
   b         N/A        Ver descripcion particion a esta libre la costumbre   
                                        (y se dice que <<las costumbres son   
                                        leyes>> dicta que el espacio swap     
                                        reside en la particion b.             
                                        El resto del disco puede dejarse en   
                                        una sola particion. Esto podria       
                                        ubicarse simplemente en la particion  
                                        a en lugar de en la e. Sin embargo la 
                                        costumbre dice que la particion a de  
                                        una <<slice>> esta reservada para el  
                                        sistema de ficheros que ha de         
                                        albergar el sistema de ficheros raiz  
                                        (/). No tiene por que seguir la       
   e         /discon    Resto del disco costumbre pero tenga en cuenta que    
                                        sysinstall si que lo hace, asi que si 
                                        la sigue sabe que esta haciendo una   
                                        instalacion mas limpia. Puede montar  
                                        los sistemas de ficheros donde        
                                        prefiera; este ejemplo le sugiere que 
                                        los monte como directorios /discon,   
                                        donde n es un numero que cambia en    
                                        cada disco. Por supuesto que puede    
                                        usar el esquema que prefiera.         

   Una vez que haya elegido el esquema de particiones creelo en sysinstall.
   Vera este mensaje:

                                  Message
  Now, you need to create BSD partitions inside of the fdisk
  partition(s) just created. If you have a reasonable amount of disk
  space (200MB or more) and don't have any special requirements, simply
  use the (A)uto command to allocate space automatically. If you have
  more specific needs or just don't care for the layout chosen by
  (A)uto, press F1 for more information on manual layout.

                                 [  OK  ]
                           [ Press enter or space ]

   Es decir:

                                  Message
  Debe crear particiones BSD dentro de las 'particiones
  fdisk' que acaba de crear.  Si tiene una cantidad de espacio en
  disco razonablemente grande (200MB o mas) y no tiene necesidades
  especiales puede simplemente usar el comando (A)uto para asignar
  el espacio automaticamente. Si tiene necesidades mas concretas o
  simplemente no le gusta la estructura que le da (A)uto pulse
  F1 y obtendra mas informacion sobre la creacion manual de
  la estructura.

                                 [  OK  ]
                           [ Pulse Intro o Espacio ]

   Al pulsar Intro arrancara el editor de particiones de FreeBSD, Disklabel.

   La Figura 2.17, "El editor Disklabel" muestra lo que vera cuando arranque
   Disklabel. La pantalla se divide en tres secciones.

   Las primeras lineas muestran el nombre del disco en el que estamos
   haciendo cambios y el de la <<slice>> que contiene las particiones que
   estamos creando (Disklabel las muestra bajo Partition name (<<nombre de
   particion>>) en lugar de hacerlo como <<slices>>). Vemos tambien ahi la
   cantidad de espacio libre en la <<slice>>, esto es, el espacio que hay
   asignado a la <<slice>> pero que aun no ha sido asignado a ninguna
   particion.

   En la mitad de la pantalla se muestran las particiones que se han creado,
   el nombre de los sistemas de ficheros que contiene cada particion, sus
   tamanos y algunas opciones relacionadas con la creacion de sistemas de
   ficheros.

   La tercera parte de la pantalla, la de mas abajo, muestra los atajos de
   teclado que pueden usarse en Disklabel.

   Figura 2.17. El editor Disklabel
   El editor Disklabel

   Disklabel puede crear automaticamente particiones y asignarles tamanos por
   omision. Estos tamanos se calculan con la ayuda de un algoritmo interno de
   dimensionamiento de particiones que analiza el tamano del disco. Puede
   probarlo pulsando A. Vera una pantalla similar a la que aparece en la
   Figura 2.18, "Editor Disklabel con valores por omision". Dependiendo del
   tama~o del disco que este usando los valores por omision pueden o no ser
   los apropiados. Esto no es algo de lo que deba preocuparse dado que no
   esta obligado a aceptar esos valores por omision.

  Nota:

   En el esquema de particiones por omision el directorio /tmp tiene su
   propia particion en lugar de formar parte de /. Esto ayuda a evitar el
   desbordamiento de / con ficheros temporales.

   Figura 2.18. Editor Disklabel con valores por omision
   Editor Disklabel con valores por omision

   Si decide no usar los valores por defecto para las particiones y quiere
   reemplazar tales valores por los suyos use las flechas: elija la primera
   particion y pulse D para borrarla. Repita el proceso para borrar todas las
   particiones que desee.

   Vamos a crear la primera particion (a, montada como / o raiz). Seleccione
   la <<slice>> adecuada y pulse C. Aparecera un dialogo pidiendole que
   escriba el tamano de la nueva particion (como se muestra en la in
   Figura 2.19, "Liberar espacio para la particion raiz"). Puede introducir
   el tamano expresado en bloques de disco o como un numero seguido de una M
   para expresarlo en megabytes, una G para usar gygabytes o una C si quiere
   expresarlo en cilindros.

   Figura 2.19. Liberar espacio para la particion raiz
   Liberar espacio para la particion raiz

   El tamano por omision que se muestra creara una particion que ocupe el
   resto de la <<slice>>. Si va a usar los tamanos de particion que se daban
   en el ejemplo anterior borre el texto existente pulsando Retroceso;
   escriba 64M, como se puede ver en la Figura 2.20, "Edicion del tamano de
   la particion raiz". Despues pulse [ OK ].

   Figura 2.20. Edicion del tamano de la particion raiz
   Edicion del tamano de la particion raiz

   Una vez elegido el tamano de la particion tendra que elegir si esta
   particion ha de contener un sistema de ficheros o espacio swap y escribir
   lo que corresponda en una pantalla como la que se muestra en la
   Figura 2.21, "Elegir el tipo de particion raiz". Esta primera particion
   contendra un sistema de ficheros, asi que seleccionamos FS y pulsamos
   Intro.

   Figura 2.21. Elegir el tipo de particion raiz
   Elegir el tipo de particion raiz

   Para acabar, dado que esta creando un sistema de ficheros, tendra que
   decirle a Disklabel donde hay que montarlo. La pantalla se muestra en la
   Figura 2.22, "Elegir el punto de montaje del sistema de ficheros raiz". El
   punto de montaje del sistema de ficheros raiz es /, asi que tendra que
   teclear /y luego pulsar Intro.

   Figura 2.22. Elegir el punto de montaje del sistema de ficheros raiz
   Elegir el punto de montaje del sistema de ficheros raiz

   La pantalla le mostrara ahora la particion que acaba de crear. Repita el
   procedimiento todas las veces que necesite con las demas particiones.
   Cuando cree la particion swap no se le pedira el punto de montaje puesto
   que las particiones swap nunca se montan como tales. Cuando cree la ultima
   particion /usr, puede dejar el tamano que se le sugiere, esto es, usar el
   resto del espacio en la <<slice>>.

   La ultima pantalla del editor Disklabel sera muy parecida a la
   Figura 2.23, "Editor Disklabel", aunque los valores pueden ser diferentes.
   Pulse Q para salir del editor.

   Figura 2.23. Editor Disklabel
   Editor Disklabel

2.7. Eleccion de que instalar

  2.7.1. Eleccion del tipo de instalacion

   La eleccion de que tipo de instalacion debe hacer depende enormemente del
   uso que se va a dar al sistema y del espacio de disco disponible. El rango
   de opciones predefinidas esta entre hacer la instalacion mas pequena
   posible o instalarlo todo. Las personas con poco o ninguna experiencia en
   UNIX(R) o FreeBSD deberan elegir alguna de las opciones predefinidas que
   se les ofrecen, a las que llamaremos distribuciones (de <<distribution
   set>>) tal y como aparecen en el menu de sysinstall. Una instalacion .a
   medida es algo mas adecuado para para usuarios con mas experiencia.

   Si pulsa F1 podra acceder a mas informacion sobre las opciones de tipo de
   instalacion y que contiene cada distribucion. Cuando acabe de consultar la
   ayuda pulse Intro y volvera al al menu de seleccion de instalacion de
   distribuciones.

   Si tiene intencion de instalar un interfaz grafico de usuario tendra que
   instalar una de las distribuciones cuyo nombre comienza por X. La
   configuracion del servidor X y la seleccion de un entorno de escritorio
   son algunas de las tareas que tendra una vez instalado FreeBSD. Tiene mas
   informacion sobre la configuracion de un servidor X en Capitulo 5, El
   sistema X Window.

   La version de X11 por omision en FreeBSD es Xorg.

   Si preve compilar un kernel a medida selecciones la opcion que incluye el
   codigo fuente. Para mas informacion sobre las razones por las que debe
   compilarse un kernel a medida y sobre como compilarlo consulte el
   Capitulo 8, Configuracion del kernel de FreeBSD.

   Evidentemente el sistema mas versatil es aquel que lo tiene todo. Si
   dispone de espacio de disco suficiente seleccione All, como se muestra en
   la Figura 2.24, "Eleccion de distribuciones", usando las flechas y
   pulsando Intro. Si el espacio en disco es limitado piense en usar alguna
   de las otras opciones. No pierda con ello demasiado tiempo puesto que el
   resto de distribuciones pueden anadirse en cualquier momento tras la
   intalacion.

   Figura 2.24. Eleccion de distribuciones
   Eleccion de distribuciones

  2.7.2. Instalacion de la coleccion de ports

   Tras seleccionar la distribucion elegida se le presentara la opcion de
   instalar el arbol de ports, o Coleccion de Ports, de FreeBSD. Los ports
   son una forma facil y comoda de instalar software. El arbol de ports no
   contiene el codigo fuente necesario para compilar software; es una gran
   coleccion de ficheros que automatiza la descarga, la compilacion y la
   instalacion de paquetes de software de todo tipo. El Capitulo 4,
   Instalacion de aplicaciones: <<packages>> y ports explica con detalle como
   utilizar los ports.

   El programa de instalacion no comprueba si tiene espacio suficiente.
   Seleccione esta opcion si dispone de sitio en el disco. En FreeBSD 11.1
   los ports ocupan cerca de 500 MB en disco. Puede asumir tranquilamente que
   en las nuevas versiones del sistema iran ocupando mas y mas.

                          User Confirmation Requested
  Would you like to install the FreeBSD ports collection?

  This will give you ready access to over 24,000 ported software packages,
  at a cost of around 500 MB of disk space when "clean" and possibly much
  more than that if a lot of the distribution tarballs are loaded
  (unless you have the extra CDs from a FreeBSD CD/DVD distribution
  available and can mount it on /cdrom, in which case this is far less
  of a problem).

  The Ports Collection is a very valuable resource and well worth having
  on your /usr partition, so it is advisable to say Yes to this option.

  For more information on the Ports Collection & the latest ports,
  visit:
      http://www.FreeBSD.org/ports

                               [ Yes ]     No

   Es decir:

  Peticion de confirmacion del usuario
  ?Quiere instalar la coleccion de ports de FreeBSD?

  Tendra acceso inmediato a mas de 24,000 paquetes de software listos
  para usarse en FreeBSD, aunque necesitara cerca de 500 MB de
  espacio en disco como minimo y posiblemente mucho mas
  si descarga los 'tarballs' de codigo fuente (aunque si tiene los CD
  extra de una version de FreeBSD en CD/DVD puede montarlos en /cdrom, de forma
  que esto dejaria de ser un problema).

  La coleccion de ports es un recurso extremadamente valioso y es muy
  recomendable que la instale en su particion /usr, asi que deberia
  responder Si a la siguiente pregunta.

  Si quiere estar al tanto de las ultimas novedades y las ultimas
  entradas en la coleccion de ports visite:
      http://www.FreeBSD.org/ports

                               [ Yes ]     No

   Seleccione [ Yes ] con las flechas e instale los ports o [ No ] para
   obviar la pregunta. Pulse Intro para seguir con la instalacion. Volvemos
   al menu de eleccion de distribuciones.

   Figura 2.25. Confirmar la eleccion de distribuciones
   Confirmar la eleccion de distribuciones

   Si ya ha elegido todo lo que necesita seleccione Exit con las flechas,
   asegurese de que [ OK ] esta seleccionado tambien y pulse Intro.

2.8. Eleccion del medio de instalacion

   Si va a instalar FreeBSD desde CDROM o DVD seleccione Install from a
   FreeBSD CD/DVD con las flechas. Una vez [ OK ] esta seleccionado pulse
   Intro y siga adelante con la instalacion.

   Si quiere usar otro metodo de instalacion seleccione la opcion
   correspondiente y siga las instrucciones.

   Pulse F1 si necesita acceder a la ayuda del medio de instalacion elegido.
   Pulse Intro para regresar al menu de seleccion de medios.

   Figura 2.26. Choose Installation Media
   Choose Installation Media

  Tipos de instalacion desde FTP:

   Hay tres tipos de instalacion por FTP entre las que puede elegir: FTP
   activo, FTP pasivo o a traves de un proxy HTTP.

   FTP Activo: Install from an FTP server, es decir: <<Instalar desde un
   servidor FTP>>

           Esta opcion hara que todas las transferencias FTP usen el modo
           <<Activo>>. No funcionara a traves de cortafuegos pero seguramente
           funcionara con viejos servidores FTP que no soportan el modo
           pasivo. Si su conexion se cuelga cuando usa el modo pasivo (el
           modo por omision) pruebe el modo activo.

   FTP Pasivo: Install from an FTP server through a firewall, es decir
   <<Instalar desde un servidor FTP tras un cortafuegos>>.

           Esta opcion configura sysinstall para que use el modo <<Pasivo>>
           para todas las operaciones FTP. Esto permite al usuario pasar a
           traves de cortafuegos que no permiten conexiones entrantes a
           puertos TCP aleatorios.

   FTP via un proxy HTTP: Install from an FTP server through a http proxy, es
   decir <<Instalar desde un un servidor FTP via un proxy HTTP>>.

           Esta opcion configura sysinstall para que use el protocolo HTTP
           (como si fuera un navegador web) para conectarse a un proxy en
           todas las operaciones FTP. El proxy traducira las peticiones del
           usuario de forma que pasaran a traves de un cortafuegos que no
           permita ningun tipo de conexiones FTP pero ofrezca un proxy HTTP.
           Tendra que configurar los datos del proxy ademas de los del
           servidor FTP.

   Si quiere usar un servidor proxy FTP tendra que usar el nombre del
   servidor con el que realmente quiere conectar como nombre de usuario
   seguido de un signo <<@>>. Veamos un ejemplo. Quiere usted instalar desde
   ftp.FreeBSD.org a traves del servidor proxy FTP talycual.ejemplo.com, que
   escucha en el puerto 1024.

   Vaya al menu opciones, ponga ftp@ftp.FreeBSD.org como nombre de usuario
   FTP, y su direccion de correo electronico como contrasena. El medio de
   instalacion sera FTP (o FTP pasivo si el proxy lo permite) y la URL
   ftp://talycual.ejemplo.com:1234/pub/FreeBSD.

   Dado accede al directorio /pub/FreeBSD de ftp.FreeBSD.org a traves del
   proxy talycual.ejemplo.com puede usted instalar desde esta maquina, que
   ira descargando los ficheros que necesite desde ftp.FreeBSD.org a medida
   que el proceso de instalacion los vaya requiriendo.

2.9. El punto sin retorno

   A partir de aqui entramos en la instalacion propiamente dicha. Esta es la
   ultima oportunidad antes de empezar a escribir datos en el disco duro.

                        User Confirmation Requested
  Last Chance! Are you SURE you want to continue the installation?

  If you're running this on a disk with data you wish to save then WE
  STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!

  We can take no responsibility for lost disk contents!

                              [ Yes ]    No

   Es decir:

    Peticion de confirmacion del usuario
  !Ultima oportunidad!.  ?SEGURO que quiere seguir con la instalacion?

  Si esta ejecutando este proceso en un disco que contenga datos que
  quiera coservar LE RECOMENDAMOS ENCARECIDAMENTE QUE HAGA COPIAS DE
  SEGURIDAD FIABLES antes de instalar.

  No podemos asumir nigun tipo de responsabilidad por datos que pierda.

                              [ Yes ]    No

   Seleccione [ Yes ] y pulse Intro.

   La instalacion tardara mas o menos tiempo segun la distribucion que haya
   elegido, el medio de instalacion y la velocidad del sistema. Se le iran
   mostrando mensajes durante el proceso para irle informando de como van las
   cosas.

   Cuando acabe la instalacion vera un mensaje como este:

                                Message

 Congratulations! You now have FreeBSD installed on your system.

 We will now move on to the final configuration questions.
 For any option you do not wish to configure, simply select No.

 If you wish to re-enter this utility after the system is up, you may
 do so by typing: sysinstall .

                                  [ OK ]

                       [  Press enter to continue  ]

   Es decir:

                                Mensaje

          !Enhorabuena! Ha instalado FreeBSD en su sistema.

 Ahora terminaremos la configuracion del sistema.  Si hay alguna
 opcion que no quiere configurar bastara con que elija No.

 Si en algun momento quiere regresar a este programa escriba
 sysinstall .

                                  [ OK ]

                       [  Pulse Intro  ]

   Pulse Intro; pasaremos a acometer ciertas tareas posteriores a la
   instalacion.

   Si selecciona [ No ] y pulsa Intro la instalacion se detendra para evitar
   hacer mas modificaciones en su sistema. Vera el el siguiente mensaje.

                                 Message
 Installation complete with some errors.  You may wish to scroll
 through the debugging messages on VTY1 with the scroll-lock feature.
 You can also choose "No" at the next prompt and go back into the
 installation menus to retry whichever operations have failed.

                                  [ OK ]

   Es decir:

                                 Mensaje
 La instalacion ha finalizado con errores.  Puede moverse por la
 pantalla de mensajes de depuracion de VTY1 tras pulsar la tecla
 de Bloqueo de Pantalla.  Tambien puede elegir "No" en el proximo
 menu y volver a los menus de instalacion y repetir cualquier
 operacion que haya fallado.

                                  [ OK ]

   Este mensaje se ha generado porque no se ha instalado nada. Pulse Intro
   para volver al menun principal y salir de la instalacion.

2.10. Despues de la instalacion

   Para poder terminar una instalacion de FreeBSD que merezca tal nombre
   debemos responder todavia a unas cuantas preguntas. Para ello debemos
   entrar en la configuracion antes de entrar en el nuevo sistema FreeBSD o
   una vez en dentro del sistema desde sysinstall, seleccionando Configure.

  2.10.1. Network Device Configuration

   Si ha tenido que configurar PPP para poder instalar desde FTP esta
   pantalla no aparecera. Puede modificar la configuracion tal y como se ha
   explicado mas arriba.

   Si necesita informacion sobre redes de area local y la configuracion de
   FreeBSD necesaria para que haga de <<gateway/router>> consulte el Advanced
   Networking chapter.

                       User Confirmation Requested
    Would you like to configure any Ethernet or SLIP/PPP network devices?

                              [ Yes ]   No

   Si quiere configurar dispositivos de red seleccione [ Yes ] y pulse Intro.
   Si no quiere seleccione [ No ].

   Figura 2.27. Seleccion de un dispositivo Ethernet
   Seleccion de un dispositivo Ethernet

   Seleccione con las flechas el interfaz de red que desea configurar y pulse
   Enter.

                       User Confirmation Requested
        Do you want to try IPv6 configuration of the interface?

                               Yes   [ No ]

   En la red local del ejemplo el tipo de protocolo de Internet que habia
   (IPv4) parecia mas que suficiente, asi que se eligio [ No ].

   Si puede conectar con alguna red IPv6 mediante un servidor RA elija
   [ Yes ] y pulse Intro. La busqueda de servidores RA se hara en unos
   instantes.

                              User Confirmation Requested
         Do you want to try DHCP configuration of the interface?

                               Yes   [ No ]

   Si no necesita DHCP seleccione [ No ] con las flechas y pulse Intro.

   Si selecciona [ Yes ] ejecutara dhclient y, si ha funcionado, completara
   los datos de configuracion automaticamente. Para mas informacion consulte
   la Seccion 29.10, "DHCP".

   La siguiente ilustracion muestra la configuracion de un dispositivo
   Ethernet en un sistema que cumplira las funciones de <<gateway>> en una
   red local.

   Figura 2.28. Configuracion de ed0
   Configuracion de ed0

   Use el tabulador para ir pasando de un campo al siguiente una vez que los
   vaya rellenando:

   Host

           El nombre de la maquina; por ejemplo, k6-2.ejemplo.com.

   Dominio

           El nombre del dominio al que pertenece la maquina, en este caso
           ejemplo.com.

   <<Gateway>>IPv4

           La direccion IP del sistema que reenvia paquetes a destinos fuera
           de la red local. Debe rellenar este campo si esta funcion la
           realiza una maquina que forme parte de la red. Dejelo en blanco si
           el sistema es el enlace de su red con Internet. El <<gateway>>
           recibe tambien los nombres de puerta de enlace o ruta por omision.

   Servidor de nombres

           Direccion IP de su servidor local de DNS. En la red del ejemplo no
           hay servidor DNS local asi que se ha introducido la direccion IP
           del servidor DNS del proveedor de Internet: 208.163.10.2.

   Direccion IPv4

           En este interfaz se usara la direccion IP 192.168.0.1

   Mascara de red

           En esta red local se usa un bloque de redes de Clase C 192.168.0.0
           - 192.168.0.255. La mascara de red es, por tanto, 255.255.255.0.

   Opciones adicionales de ifconfig

           Cualquiera de las opciones que quiera agregar a su interfaz
           mediante ifconfig. En nuestro caso no habia ninguna.

   Utilice el tabulador para seleccionar [ OK ] cuando haya acabado y
   pulseIntro.

                       User Confirmation Requested
         Would you like to Bring Up the ed0 interface right now?

                              [ Yes ]   No

   Seleccione [ Yes ] y pulse Enter si quiere conectar inmediatamente su
   sistema a la red mediante el o los interfaces que acaba de configurar,
   pero recuerde que aun tendra que reiniciar la maquina.

  2.10.2. Configuracion del <<gateway>>

                        User Confirmation Requested
        Do you want this machine to function as a network gateway?

                               [ Yes ]    No

   Si el sistema hara de enlace de la red local y reenviara paquetes entre
   otras maquinas elija [ Yes ] y pulse Intro. Si la maquina es un nodo de
   una red elija [ No ] y pulse Intro.

  2.10.3. Configuracion de servicios de internet

                       User Confirmation Requested
 Do you want to configure inetd and the network services that it provides?

                                Yes   [ No ]

   Si selecciona [ No ] varios servicios de la maquina, como telnetd y otros,
   no se activaran. Eso significa que los usuarios remotos no podran acceder
   al sistema mediante telnet. Los usuarios locales, en cambio, podran
   acceder a sistemas remotos mediante telnet.

   Dichos servicios pueden activarse en cualquier momento editando
   /etc/inetd.conf con el editor de texto que prefiera. Para mas informacion
   consulte la Seccion 29.14.1, "Resumen".

   Seleccione [ Yes ] si desea configurar estos servicios durante la
   instalacion. Se le mostrara el siguiente mensaje:

                       User Confirmation Requested
 The Internet Super Server (inetd) allows a number of simple Internet
 services to be enabled, including finger, ftp and telnetd.  Enabling
 these services may increase risk of security problems by increasing
 the exposure of your system.

 With this in mind, do you wish to enable inetd?

                              [ Yes ]   No

   Select [ Yes ] to continue.

                       User Confirmation Requested
 inetd(8) relies on its configuration file, /etc/inetd.conf, to determine
 which of its Internet services will be available.  The default FreeBSD
 inetd.conf(5) leaves all services disabled by default, so they must be
 specifically enabled in the configuration file before they will
 function, even once inetd(8) is enabled.  Note that services for
 IPv6 must be separately enabled from IPv4 services.

 Select [Yes] now to invoke an editor on /etc/inetd.conf, or [No] to
 use the current settings.

                              [ Yes ]   No

   Es decir:

       Peticion de confirmacion del usuario
 El Super Servidor de Internet (inetd) le permite activar diversos
 servicios sencillos de Internet, como finger, ftp y telnetd.  Si
 activa tales servicios puede sobreexponer su sistema al exterior, lo
 que puede incrementar el riesgo de tener problemas de seguridad.

 Dicho esto ?desea activar inetd?

                              [ Yes ]   No

   Si selecciona [ Yes ] podra anadir servicios borrando caracteres # al
   comienzo de las lineas correspondientes.

   Figura 2.29. Edicion de inetd.conf
   Edicion de inetd.conf

   Una vez que haya anadido los servicios que quiera en el sistema pulse Esc
   y vera un menu en el que se le preguntara si quiere guardar los cambios.

  2.10.4. Activar el acceso al sistema mediante SSH

                       User Confirmation Requested
                   Would you like to enable SSH login?
                            Yes        [  No  ]

   Si selecciona [ Yes ] activara sshd(8), el daemon de OpenSSH. De este modo
   sera posible el acceso remoto y seguro al sistema. Para mas informacion
   sobre OpenSSH visite Seccion 14.11, "OpenSSH".

  2.10.5. FTP anonimo

                       User Confirmation Requested
  Do you want to have anonymous FTP access to this machine?

                               Yes    [ No ]

    2.10.5.1. Rechazar el acceso al sistema mediante FTP anonimo

   si acepta la respuesta por omision ([ No ]) y pulsa Intro tenga en cuenta
   que los usuarios que tengan cuenta en la maquina podran seguir accediendo
   al sistema.

    2.10.5.2. Aceptar el acceso al sistema mediante FTP anonimo

   Si decide aceptar conexiones FTP anonimas cualquiera podra conectarse al
   sistema. Antes de activar esta opcion deberia meditar sobre las
   implicaciones de seguridad de esa decision. Para mas informacion sobre la
   seguridad y FreeBSD consulte el Capitulo 14, Seguridad.

   Si ha decidido activar el FTP anonimo seleccione con las flechas [ Yes ] y
   pulse Intro. Vera la siguiente pantalla (o una muy similar):

 This screen allows you to configure the anonymous FTP user.

 The following configuration values are editable:

 UID:     The user ID you wish to assign to the anonymous FTP user.
          All files uploaded will be owned by this ID.

 Group:   Which group you wish the anonymous FTP user to be in.

 Comment: String describing this user in /etc/passwd


 FTP Root Directory:

         Where files available for anonymous FTP will be kept.

 Upload subdirectory:

         Where files uploaded by anonymous FTP users will go.

   Es decir:

 En esta pantalla puede configurar el usuario de FTP
         anonimo.

 Puede editar los siguientes valores de la configuracion:

 UID:     El ID del usuario que quiere asignar al usuario anonimo de
          de FTP.  Todos los ficheros que se suban le  perteneceran.

 Group:   El grupo al que pertenecera el usuario FTP anonimo.

 Comment: La descripcion del usuario en /etc/passwd


 FTP Root Directory:

         Donde se guardaran contenidos para los usuarios anonimos.

 Upload subdirectory:

         Donde se guardaran los ficheros que suban los usuarios
         de FTP anonimo.

   Por omision el directorio raiz del ftp sera /var. Si no hay sitio
   suficiente para lo que prevea que va a necesitar puede usar /usr; puede
   poner el Directorio Raiz de FTP en /usr/ftp.

   Cuando haya terminado con la configuracion pulse Intro.

                           User Confirmation Requested
          Create a welcome message file for anonymous FTP users?

                               [ Yes ]    No

   Si selecciona [ Yes ] y pulsa Intro arrancara automaticamente un editor y
   podra crear un mensaje que vera los usuarios de FTP anonimo al conectarse
   a la maquina.

   Figura 2.30. Edicion del mensaje de bienvenida de FTP
   Edicion del mensaje de bienvenida de FTP

   Vemos en accion un editor de texto llamado ee. Puede modificar el mensaje
   ahora mismo o hacerlo en cualquier otro momento con el editor de texto que
   prefiera. Observe el fichero y su ubicacion en la parte baja de la
   pantalla.

   Pulse Esc, aparecera una ventana flotante con la opcion por omision de to
   a) leave editor (salir del editor). Pulse Intro si quiere salir y seguir
   con lo que estaba haciendo. Pulse Intro de nuevo para guardar los cambios
   que hubiera hecho.

  2.10.6. Configuracion de NFS

   NFS (<<Network File System>> (de Network File System, o Sistema de
   Ficheros en Red) le permitira compartir ficheros a traves de una red. Una
   maquina puede configurarse como servidor, como cliente o ambos. Para ma
   informacion consulte la Seccion 29.6, "NFS".

    2.10.6.1. Servidor NFS

                        User Confirmation Requested
  Do you want to configure this machine as an NFS server?

                               Yes    [ No ]

   Si no tiene necesidad de usar un servidor NFS seleccione [ No ] y pulse
   Intro.

   Si ha elegido [ Yes ] vera un mensaje emergente indicando que hay que
   crear el fichero exports.

                                Message
 Operating as an NFS server means that you must first configure an
 /etc/exports file to indicate which hosts are allowed certain kinds of
 access to your local filesystems.
 Press [Enter] now to invoke an editor on /etc/exports
                                [ OK ]

   Es decir:

                                Mensaje
 Hacer funcionar un servidor NFS implica que tendra que configurar
 un fichero /etc/exports para indicar que hosts estaran autorizados a
 acceder de que manera a sus sistemas de ficheros locales.
 Pulse [Intro] para abrir /etc/exports en un editor
                                [ OK ]

   Pulse Intro para seguir adelante. Se abrira un editor de texto gracias al
   cual se podra editar y crear el fichero exports.

   Figura 2.31. Edicion de exports
   Edicion de exports

   Puede editar el fichero ahora mismo o mas tarde con el editor de texto que
   prefiera. Observe que el nombre del fichero y su ubicacion aparecen en la
   parte de abajo de de la pantalla.

   Pulse Escape; aparecera un mensaje emergente que por omision le ofrecera
   a) leave editor (es decir, salir del editor). Pulse Intro para salir del
   editor y seguir adelante.

    2.10.6.2. Cliente NFS

   El cliente NFS permite que su maquina pueda acceder a servidores NFS.

                        User Confirmation Requested
  Do you want to configure this machine as an NFS client?

                               Yes   [ No ]

   Utilice las flechas para elegir si quiere o no disponer de cliente NFS
   (respectivamente con [ Yes ] y [ No ] y pulse Intro.

  2.10.7. Configuracion de la consola del sistema

   La consola del sistema tiene diversas opciones que puede usted adaptar a
   sus gustos o necesidades.

                       User Confirmation Requested
        Would you like to customize your system console settings?

                               [ Yes ]  No

   Si quiere ver y modificar las opciones seleccione [ Yes ] y pulse Intro.

   Figura 2.32. Opciones de configuracion de la consola del sistema
   Opciones de configuracion de la consola del sistema

   Una opcion que suele elegirse es el uso del salvapantallas. Elija Saver y
   luego pulse Intro.

   Figura 2.33. Opciones del salvapantallas
   Opciones del salvapantallas

   Desplacese arriba y abajo con las flechas por la lista de salvapantallas y
   elija el que prefiera pulsando Intro sobre el. Se le mostrara de nuevo el
   menu de configuracion de la consola.

   El intervalo por defecto es de 300 segundos. Si quiere cambiarlo
   seleccione Saver otra vez. Busque Timeout en el menu de opciones del
   salvapantallas y pulse Intro. Aparecera un mensaje en pantalla:

   Figura 2.34. Retardo del salvapantallas
   Retardo del salvapantallas

   Asigne el retardo del salvapantallas a su gusto, seleccione [ OK ] y pulse
   Intro para volver al menu de configuracion de la consola del sistema.

   Figura 2.35. Salida del menu de configuracion de la consola del sistema
   Salida del menu de configuracion de la consola del sistema

   Seleccione Exit y pulse Intro para seguir adelante con la configuracion
   necesaria tras la instalacion.

  2.10.8. Configuracion de la zona horaria

   Si su sistema tiene correctamente configurada la zona horaria podra
   corregir cualquier automaticamente cualquier cambio horario regional, asi
   como cumplir adecuadamente con otras funciones relacionadas con zonas
   horarias.

   El ejemplo que se muestra en las capturas de pantalla es de una maquina
   ubicada en la zona horaria del Este de los EEUU.

                       User Confirmation Requested
           Would you like to set this machine's time zone now?

                             [ Yes ]   No

   Seleccione [ Yes ] y pulse Intro. Vamos a configurar la zona horaria del
   sistema.

   Seleccione [ Yes ] y pulse Intro.

                        User Confirmation Requested
  Is this machine's CMOS clock set to UTC? If it is set to local time
  or you don't know, please choose NO here!

                               Yes   [ No ]

   Seleccione [ Yes ] o [ No ] segun este configurado el reloj del sistema y
   pulse Intro.

   Figura 2.36. Eleccion de region
   Eleccion de region

   Elija la zona adecuada mediante las flechas y pulse Intro.

   Figura 2.37. Eleccion de pais
   Eleccion de pais

   Elija el pais adecuado con las flechas y pulse Intro.

   Figura 2.38. Eleccion de zona horaria
   Eleccion de zona horaria

   Elija la zona horaria adecuada con las flechas y pulse Intro.

                             Confirmation
             Does the abbreviation 'EDT' look reasonable?

                             [ Yes ]   No

   Confirme si la abreviatura de la zona horaria es la correcta. Cuando todo
   este correcto pulse Intro y siga adelante.

  2.10.9. Compatibilidad con Linux(R)

                       User Confirmation Requested
           Would you like to enable Linux binary compatibility?

                             [ Yes ]   No

   Si selecciona [ Yes ] y pulsa Intro podra ejecutar software Linux(R) en
   FreeBSD. La instalacion anadira los paquetes necesarios para poder tener
   compatibilidad binaria con Linux(R).

   Si realiza la instalacion por FTP la maquina necesitara conectarse a
   Internet. A veces los servidores ftp no tienen todas las distribuciones,
   de forma que si no puede instalar la distribucion de compatibilidad con
   Linux(R) no se preocupe, puede probar con otro servidor o instalarla mas
   tarde.

  2.10.10. Configuracion del raton

   Esta opcion le permitira cortar y pegar texto en consola y en otros
   programas mediante un raton de tres botones. Consulte moused(8) si usa uno
   de 2 botones, es posible emular ese tercer boton. En el siguiente ejemplo
   veremos la configuracion de un raton <<no USB>> (es decir, PS/2 o de
   puerto COM):

                       User Confirmation Requested
          Does this system have a PS/2, serial, or bus mouse?

                             [ Yes ]    No

   Seleccione [ Yes ] si tiene un raton que no sea USB o por el contrario
   seleccione [ No ] si tiene un raton USB. Despues pulse Intro.

   Figura 2.39. Elija el protocolo que usa el raton
   Elija el protocolo que usa el raton

   Seleccione Type usando las flechas y pulse Intro.

   Figura 2.40. Ajuste del protocolo del raton
   Ajuste del protocolo del raton

   En el ejemplo se ha usado un raton PS/2, asi que Auto era correcto. Para
   cambiar el protocolo use las flechas para moverse por el menu y elegir
   otra opcion. Para salir seleccione [ OK ] y pulse Intro.

   Figura 2.41. Configuracion del puerto del raton
   Configuracion del puerto del raton

   Seleccione Port y pulse Intro.

   Figura 2.42. Configuracion del puerto del raton
   Configuracion del puerto del raton

   El sistema de ejemplo tiene un ratona PS/2, de forma que la configuracion
   por omision basta. Si quiere modificarla utilice las flechas y despues
   pulseIntro.

   Figura 2.43. Arranque del daemon del raton
   Arranque del daemon del raton

   Por ultimo, utilice las flechas para elegir Enabley pulse Intro; asi se
   activa y prueba el daemon del raton.

   Figura 2.44. Prueba del daemon del raton
   Prueba del daemon del raton

   Mueva el raton un poco por la pantalla hasta asegurarse de que el cursor
   responde adecuadamente. Si todo es correcto seleccione [ Yes ] y pulse
   Intro. Si hay algo que no funcione correctamente seleccione [ No ] e
   intentelo con otras opciones de configuracion.

   Seleccione Exit y pulse Intro para volver a la configuracion del sistema.

  2.10.11. Instalacion de <<packages>>

   Los <<packages>> son binarios precompilados; son una forma muy comoda de
   instalar software.

   Veamos la instalacion de un <<package>> Este es un buen momento para
   instalar <<packages>> si asi lo desea. De todos modos una vez concluida la
   instalacion puede entrar cuando quiera a sysinstall e instalar lo que
   necesite.

                      User Confirmation Requested
  The FreeBSD package collection is a collection of hundreds of
  ready-to-run applications, from text editors to games to WEB servers
  and more. Would you like to browse the collection now?

                             [ Yes ]   No

   Elija [ Yes ] y pulse Intro: vera la pantalla de seleccion de paquetes:

   Figura 2.45. Categorias de <<packages>>
   Categorias de <<packages>>

   Los <<packages>> presentes en el medio de instalacion que este accesible
   en cada momento son los unicos que se pueden instalar.

   Todos los <<packages>> disponibles en el medio se mostraran al seleccionar
   la categoria All. Elija una categoria y pulse Intro.

   Al seleccionar una categoria aparecera un menu con los paquetes
   disponibles existentes en la misma:

   Figura 2.46. Seleccion de <<packages>>
   Seleccion de <<packages>>

   Hemos elegido la shell bash. Seleccione tantos <<packages>> como quiera
   instalar y pulse Espacio. Se mostrara una breve descripcion de cada
   <<package>> en la esquina inferior izquierda de la pantalla.

   Pulsando el Tabulador desplazara el cursor entre el ultimo <<package>> que
   haya seleccionado, [ OK ] y [ Cancel ].

   Cuando haya seleccionado todos los <<packages>> que quiera instalar pulse
   Tabulador una sola vez para que el cursor pase a [ OK ] y pulse Intro, lo
   que le llevara al menu de seleccion de <<packages>>.

   Las flechas <<izquierda>> y <<derecha>> pueden usarse para mover el cursor
   entre [ OK ] y [ Cancel ]. Use esto para seleccionar [ OK ] y pulsar Intro
   para volver al menu de seleccion de <<packages>>.

   Figura 2.47. Instalacion de <<packages>>
   Instalacion de <<packages>>

   Utilice el tabulador y las flechas para seleccionar [ Install ] y pulse
   Intro. Se le pedira que confirme que quiere instalar <<packages>>:

   Figura 2.48. Confirmacion previa a la instalacion de <<packages>>
   Confirmacion previa a la instalacion de <<packages>>

   Si selecciona [ OK ] y pulsa Intro comenzara la instalacion de
   <<packages>>. Iran apareciendo mensajes relacionados con los diversos
   procesos de instalacion hasta que se cumplan todos. Este atento por si
   aparecieran mensajes de error.

   Tras la instalacion de <<packages>> nos quedan unos toques finales a la
   configuracion. Si no ha elegido ningun <<package>> y quiere regresar al
   menu de configuracion seleccione Install de todos modos.

  2.10.12. Anadir usuarios y grupos

   Deberi al menos anadir un usuario al sistema para poder usarlo para
   acceder al sistema una vez reiniciado sin tener que recurrir a root. La
   particion raiz suele ser pequena y ejecutar aplicaciones como root tiene a
   llenarla rapidamente. Pero hay un peligro mucho mayor:

                      User Confirmation Requested
  Would you like to add any initial user accounts to the system? Adding
  at least one account for yourself at this stage is suggested since
  working as the "root" user is dangerous (it is easy to do things which
  adversely affect the entire system).

                             [ Yes ]   No

   Es decir:

      Peticion de confirmacion del usuario
  ?Quiere anadir algun usuario al sistema? Le sugerimos que anada al menos
  uno para usted puesto que trabajar como "root" es peligroso (es facil
  hacer algo con consecuencias en todo el sistema).

                             [ Yes ]   No

   Seleccione [ Yes ] y pulse Intro para anadir un usuario.

   Figura 2.49. Seleccion de <<Anadir un usuario>>
   Seleccion de <<Anadir un usuario>>

   Seleccione User con las flechas y y pulseIntro.

   Figura 2.50. Anadir la informacion del usuario
   Anadir la informacion del usuario

   A medida que vaya seleccionando los campos ayudandose del Tabulador se le
   iran mostrando las siguientes descripciones en la parte baja de la
   pantalla:

   Login ID

           El nombre del usuario (obligatorio).

   UID

           El ID numerico del usuario Dejelo en blanco si quiere el que
           sistema lo asigne automaticamente.

   Group

           El grupo al que pertenecera el usuario. Dejelo en blanco si quiere
           que el sistema lo asigne automaticamente.

   Password

           La contrasena del usuario. Rellene este campo con mucho cuidado.

   Full name

           El nombre completo del usuario (o un comentario descriptivo.

   Member groups

           Los grupos a los que este usuario pertenece, es decir, de los que
           hereda sus derechos de acceso.

   Home directory

           El directorio <<home>> del usuario; dejelo en blanco si quiere que
           el sistema lo asigne automaticamente.

   Login shell

           La shell con la que el usuario accedera al sistema. Dejela en
           blanco si le sirve /bin/sh, la shell por omision.

   En nuestro ejemplo no se eligio /bin/sh sino /usr/local/bin/bash, para lo
   cual hubo que instalar previamente la shell bash como <<package>>. No
   intente usar una shell que no existe o no podra acceder al sistema con ese
   usuario. La shell mas habitual en el mundo BSD es /bin/tcsh, la <<C
   shell>>.

   El usuario se anadio tambien al grupo wheel para que pueda convertirse en
   superusuario con privilegios de root.

   Cuando haya terminado pulse [ OK ] y volvera al menu de gestion de grupos
   y usuarios.

   Figura 2.51. Salir de la gestion de usuarios y grupos
   Salir de la gestion de usuarios y grupos

   Los grupos tambien pueden anadirse en este momento si fuera necesario.
   Tambien puede hacerse desde sysinstall una vez culminada la instalacion.

   Cuando haya acabado de anadir usuarios seleccione Exit con las flechas y
   pulse Intro y siga con la instalacion.

  2.10.13. Asignar contrasena aroot Password

                         Message
  Now you must set the system manager's password.
  This is the password you'll use to log in as "root".

                          [ OK ]

                [ Press enter or space ]

   Es decir:

                         Mensaje
  Debe asignar la contrasena del administrador del sistema.
  Esta es la contrasena que usara cuando acceda al sistema como
  "root".

                          [ OK ]

                     [ Pulse Intro ]

   Pulse Intro y asignele una contrasena a root.

   Tendra que escribir la contrasena correctamente dos veces. No hay
   necesidad de decirle que es importante que recuerde esa contrasena.

 New password:
 Retype new password :

   La instalacion proseguira una vez que introduzca la contrasena
   correctamente dos veces.

  2.10.14. Salir de la instalacion

   Si tiene que configurar servicios de red o cualquier otra cosa, puede
   hacerlo ahora mismo o tras terminar la instalacion ejecutando sysinstall.

                      User Confirmation Requested
  Visit the general configuration menu for a chance to set any last
  options?

                               Yes   [ No ]

   Seleccione [ No ] con las flechas y pulse Intro para volver al menu
   principal de la instalacion.

   Figura 2.52. Salir de la instalacion
   Salir de la instalacion

   Seleccione [X Exit Install] con las flechas y pulse Intro. Se le pedira
   que confirme que quiere salir de la instalacion:

                      User Confirmation Requested
  Are you sure you wish to exit? The system will reboot (be sure to
  remove any floppies/CDs/DVDs from the drives).

                             [ Yes ]   No

   Es decir:

             Peticion del Confirmacion al usuario
  ?Seguro que quiere salir?  El sistema reiniciara (compruebe que
  ha retirado los disquetes de la unidad).

                             [ Yes ]   No

   Seleccione [ Yes ] y extraiga el disquete si ha arrancado desde floppy. La
   unidad CDROM esta bloqueada hasta que la maquina comience a reiniciarse.
   La unidad CDROM se desbloquea y (actuando con agilidad felina) puede
   extraerse el CDROM.

   El sistema reiniciara. Este atento por si aparece algun mensaje de error.

   Si apareciera algun error durante el arranque consulte la Seccion 2.10.16,
   "El arranque de FreeBSD".

  2.10.15. Configuracion de servicios de red

   Escrito por Tom Rhodes.

   La configuracion de servicios de red puede ser una tarea peliaguda para
   usuarios inexpertos si no tienen demasiados conocimientos en la materia.
   Todo lo relacionado con las redes (y ahi entra Internet) tiene una
   importancia critica en cualquier sistema operativo moderno y FreeBSD no es
   una excepcion. Es por esta razon que le sera muy util saber un poco sobre
   la conectividad en general de FreeBSD desde el momento mismo de la
   instalacion y los servicios de que puede disponer.

   Los servicios de red son programas que aceptan entradas de datos desde
   cualquier punto de la red. Se pone mucho empeno en evitar que estos
   programas puedan ser <<daninos>> pero por desgracia los programadores no
   son perfectos y de tanto en cuanto aparecen errores en los servicios de
   red que algunos logran aprovechar para hacer maldades. Es crucial que
   solamente active los servicios que sabe que va a necesitar. Si tiene dudas
   con alguno lo mejor es que no lo active hasta que no sea evidente que lo
   necesita. Puede activarlo cuando sea necesario ejecutando later by
   re-running sysinstall o utilizando el fichero /etc/rc.conf file.

   Si selecciona la opcion Networking vera un menu muy parecido a este:

   Figura 2.53. Primer nivel de servicios de red
   Primer nivel de servicios de red

   La primera opcion, Interfaces, la hemos visto en la Seccion 2.10.1,
   "Network Device Configuration", asi que podemos ignorarla.

   Si selecciona la opcion AMD anadira al sistema la aplicacion montaje
   automatico de dispositivos de BSD. Suele usarse junto con el protocolo NFS
   protocol (ver mas adelante) para automatizar el montaje de sistemas de
   ficheros remotos. No es necesario que configure nada.

   La siguiente opcion es AMD Flags. Si la selecciona vera un menu emergente
   que le requerira parametros especificos de AMD. El menu dispone ya de un
   conjunto de opciones por omision:

 -a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map

   La opcion -a fija el punto de montaje por omision, en este caso /.amd_mnt.
   La opcion -l indica el log por omisio, aunque si usa syslogd todos los
   datos de log se enviaran al daemon de logs del sistema. El directorio
   /host se usa para montar sistemas de ficheros exportados desde una maquina
   remota, mientras que el directorio /net se usa para montar sistemas de
   ficheros exportados desde una direccion IP. El fichero /etc/amd.map define
   las opciones de exportacion que AMD exporta por omision.

   La opcion Anon FTP permite conexiones FTP anonimas. Seleccione esta opcion
   si quiere utilizar la maquina como servidor servidor FTP anonimo. Tenga
   muy en cuenta los riesgos de seguridad que conlleva esta opcion. Se le
   ofrecera otro menu en el que se explican en profundidad los riesgos de
   seguridad y la configuracion.

   El menu de configuracion Gateway preparara la maquina para que cumpla las
   funciones de pasarela, tal y como se ha explicado previamente. Puede
   utilizarlo tambien para desactivar la opcion Gateway si la seleccionon sin
   querer durante la instalacion.

   La opcion Inetd permite desactivar el daemon inetd(8).

   La opcion Mail se usa para configurar el MTA (de Mail Transfer Agent,
   agente de transferencia de correo) del sistema. Si selecciona esta opcion
   llegara al siguiente menu:

   Figura 2.54. Elegir el MTA del sistema
   Elegir el MTA del sistema

   Aqui se le pide que elija que MTA quiere instalar en su sistema. Un MTA no
   es otra cosa que un servidor de correo que entrega correo electronico a
   los usuarios del sistema o los que acceden a traves de Internet.

   Si selecciona Sendmail instalara el celebre sendmail, el MTA de FreeBSD
   por omision. La opcion Sendmail local hara que sendmail sea el MTA del
   sistema pero desactivara la capacidad de recibir correo entrante desde
   Internet. Las demas opciones, Postfix y Exim son en el fonodo similares a
   Sendmail. Ambas aplicaciones gestionan correo aunque hay usuarios que los
   elegirian como su MTA antes que sendmail.

   Tras elegir un MTA (o si ha elegido no usar ninguno) el menu de
   configuracion de red nos muestra la siguiente opcion:NFS client.

   La opcion NFS client configura el sistema para comunicarse con servidores
   NFS. Un servidor NFS permite que, mediante el uso del protocolo NFS, otras
   maquinas de la red puedan acceder a sus sistemas de ficheros. Si no hay
   mas maquinas en su red puede dejar la opcion sin seleccionar. El sistema
   puede necesitar mas configuracion; consulte la Seccion 29.6, "NFS" para
   mas informacion sobre como configurar el cliente y el servidor.

   La siguiente opcion es NFS server, que le permitira configurar su sistema
   como servidor NFS. Con esta opcion anadira la informacion necesaria para
   el arranque de RPC, los servicios de llamada de procedimientos remotos.
   RPC se usa para coordinar conexiones entre sistemas y programas.

   La siguiente opcion es Ntpdate, la sincronizacion de la hora. Al
   seleccionarla vera un menu como este:

   Figura 2.55. Configuracion de Ntpdate
   Configuracion de Ntpdate

   Elija en el menu el servidor mas cercano al lugar donde esta la maquina.
   De este modo la sincronozacion sera mas precisa, puesto que un servidor
   mas lejano puede padecer de conexiones con mas latencia.

   La siguiente opcion es PCNFSD. Esta opcion instalara el <<package>>
   net/pcnfsd desde la coleccion de Ports. Es una aplicacion muy util que da
   servicios de autentificacion NFS a sistemas que son incapaces de tenerlos
   por si mismos, como por ejemplo el sistema operativo MS-DOS(R) de
   Microsoft.

   Si usa las flechas podra ver mas opciones:

   Figura 2.56. Segundo nivel de configuracion de red
   Segundo nivel de configuracion de red

   Las aplicaciones rpcbind(8), rpc.statd(8) y rpc.lockd(8) utilities se
   utilizan en las llamadas de procesos remotos (RPC). rpcbind gestiona la
   comunicacion entre servidores y clientes NFS; los servidores NFS lo
   necesitan para poder funcionar correctamente. El daemon rpc.statd se
   comunica con el daemon rpc.statd de otras maquinas para facilitar
   seguimiento de estado. La informacion de estado se deposita por omision en
   /var/db/statd.status. La siguiente opcion que vemos es rpc.lockd; si se
   selecciona facilita servicios de bloqueo de ficheros. Se suele usar
   conjuntamente con rpc.statd para monitorizar que maquina pide bloqueos y
   con que frecuencia. Si bien es cierto que estas dos utimas opciones son
   fantasticas para depuracion, tambien lo es que no son necesarias para que
   clientes y servidores NFS funcionen correctamente.

   El siguiente elemento de la lista es Routed, un daemon de encaminamiento.
   routed(8) gestiona tablas de rutas, encuentra <<routers>> multicast y,
   bajo peticion, facilita una copia de la tabla de rutas a cualquier maquina
   conectada fisicamente a la red. Suele usarse principalmente en maquinas
   que hacen funciones de pasarela de una red local. Si la selecciona vera un
   menu en el que se le requerira que indique la ubicacion de la aplicacion.
   Por omision ya esta configurada, asi que basta que la confirme pulsando
   Intro key. Se le presentara un menu mas, pidiendole esta vez parametros
   que quiera proporcionarle a routed. Por omision -q estara ya dispuesto y
   deberia aparecer asi en pantalla.

   La siguiente opcion que aparece es Rwhod; si la selecciona arrancara el
   daemon rwhod(8) durante el arranque del sistema. La aplicacion rwhod envia
   mensajes del sistema (en broadcast) periodicamente a traves de la red, o
   si esta en modo <<consumer>> los va recogiendo. Tiene mas informacion en
   las paginas de manual de ruptime(1) y rwho(1).

   La siguiente opcion del menu esta relacionada con el daemon sshd(8). Se
   trata del servidor de shell segura de OpenSSH y le recomendamos
   encarecidamente su uso en lugar de los servidores telnet y FTP. El
   servidor sshd se usa para crear una conexion segura de una maquina a otra
   mediante conexiones cifradas.

   La ultima opcion es TCP Extensions, que activa las extensiones TCP
   definidas en las RFC 1323 y RFC 1644. En algunas maquinas puede acelerar
   conexiones, pero tambien puede haber conexiones que se pierdan. No se
   recomienda su uso en servidores, pero puede ser de utilidad en maquinas
   aisladas.

   Una vez configurados los servicios de red, vaya al principio del menu ( X
   Exit)a o vuelva a sysinstall seleccionando dos veces X Exit y despues [X
   Exit Install].

  2.10.16. El arranque de FreeBSD

    2.10.16.1. El arranque de FreeBSD/i386

   Si todo ha ido bien deberia ver una pantalla de mensajes pasando frente a
   usted hasta que llegue a lo que llamamos un <<login prompt>>. Puede volver
   a ver los mensajes del arranque pulsando Bloq Deslp y usando RePag y
   AvPag. Pulsando Bloq Despl otra vez volvera al prompt.

   El mensaje del arranque no puede mostrarse completo debido a las
   limitaciones del bufer, pero puede consultarse desde la shell mediante
   dmesg.

   Entre al sistema utilizando un nombre de usuario y contrasena que haya
   creado durante la instalacion (en nuestro ejemplo rpratt). Evite entrar al
   sistema como root salvo en los casos en los que sea estrictamente
   necesario.

   Este es un tipico mensaje de arranque (se ha eliminado la informacion de
   la version):

 Copyright (c) 1992-2002 The FreeBSD Project.
 Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
         The Regents of the University of California. All rights reserved.

 Timecounter "i8254"  frequency 1193182 Hz
 CPU: AMD-K6(tm) 3D processor (300.68-MHz 586-class CPU)
   Origin = "AuthenticAMD"  Id = 0x580  Stepping = 0
   Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX>
   AMD Features=0x80000800<SYSCALL,3DNow!>
 real memory  = 268435456 (262144K bytes)
 config> di sn0
 config> di lnc0
 config> di le0
 config> di ie0
 config> di fe0
 config> di cs0
 config> di bt0
 config> di aic0
 config> di aha0
 config> di adv0
 config> q
 avail memory = 256311296 (250304K bytes)
 Preloaded elf kernel "kernel" at 0xc0491000.
 Preloaded userconfig_script "/boot/kernel.conf" at 0xc049109c.
 md0: Malloc disk
 Using $PIR table, 4 entries at 0xc00fde60
 npx0: <math processor> on motherboard
 npx0: INT 16 interface
 pcib0: <Host to PCI bridge> on motherboard
 pci0: <PCI bus> on pcib0
 pcib1: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
 pci1: <PCI bus> on pcib1
 pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
 isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
 isa0: <ISA bus> on isab0
 atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
 ata0: at 0x1f0 irq 14 on atapci0
 ata1: at 0x170 irq 15 on atapci0
 uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci0
 usb0: <VIA 83C572 USB controller> on uhci0
 usb0: USB revision 1.0
 uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
 uhub0: 2 ports with 2 removable, self powered
 chip1: <VIA 82C586B ACPI interface> at device 7.3 on pci0
 ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xe800-0xe81f irq 9 at
 device 10.0 on pci0
 ed0: address 52:54:05:de:73:1b, type NE2000 (16 bit)
 isa0: too many dependant configs (8)
 isa0: unexpected small tag 14
 fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
 fdc0: FIFO enabled, 8 bytes threshold
 fd0: <1440-KB 3.5" drive> on fdc0 drive 0
 atkbdc0: <keyboard controller (i8042)> at port 0x60-0x64 on isa0
 atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
 kbd0 at atkbd0
 psm0: <PS/2 Mouse> irq 12 on atkbdc0
 psm0: model Generic PS/2 mouse, device ID 0
 vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
 sc0: <System console> at flags 0x1 on isa0
 sc0: VGA <16 virtual consoles, flags=0x300>
 sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
 sio0: type 16550A
 sio1 at port 0x2f8-0x2ff irq 3 on isa0
 sio1: type 16550A
 ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
 ppc0: FIFO with 16/16/15 bytes threshold
 ppbus0: IEEE1284 device found /NIBBLE
 Probing for PnP devices on ppbus0:
 plip0: <PLIP network interface> on ppbus0
 lpt0: <Printer> on ppbus0
 lpt0: Interrupt-driven port
 ppi0: <Parallel I/O> on ppbus0
 ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master using UDMA33
 ad2: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata1-master using UDMA33
 acd0: CDROM <DELTA OTC-H101/ST3 F/W by OIPD> at ata0-slave using PIO4
 Mounting root from ufs:/dev/ad0s1a
 swapon: adding /dev/ad0s1b as swap device
 Automatic boot in progress...
 /dev/ad0s1a: FILESYSTEM CLEAN; SKIPPING CHECKS
 /dev/ad0s1a: clean, 48752 free (552 frags, 6025 blocks, 0.9% fragmentation)
 /dev/ad0s1f: FILESYSTEM CLEAN; SKIPPING CHECKS
 /dev/ad0s1f: clean, 128997 free (21 frags, 16122 blocks, 0.0% fragmentation)
 /dev/ad0s1g: FILESYSTEM CLEAN; SKIPPING CHECKS
 /dev/ad0s1g: clean, 3036299 free (43175 frags, 374073 blocks, 1.3% fragmentation)
 /dev/ad0s1e: filesystem CLEAN; SKIPPING CHECKS
 /dev/ad0s1e: clean, 128193 free (17 frags, 16022 blocks, 0.0% fragmentation)
 Doing initial network setup: hostname.
 ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
         inet6 fe80::5054::5ff::fede:731b%ed0 prefixlen 64 tentative scopeid 0x1
         ether 52:54:05:de:73:1b
 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
         inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8
         inet6 ::1 prefixlen 128
         inet 127.0.0.1 netmask 0xff000000
 Additional routing options: IP gateway=YES TCP keepalive=YES
 routing daemons:.
 additional daemons: syslogd.
 Doing additional network setup:.
 Starting final network daemons: creating ssh RSA host key
 Generating public/private rsa1 key pair.
 Your identification has been saved in /etc/ssh/ssh_host_key.
 Your public key has been saved in /etc/ssh/ssh_host_key.pub.
 The key fingerprint is:
 cd:76:89:16:69:0e:d0:6e:f8:66:d0:07:26:3c:7e:2d root@k6-2.example.com
  creating ssh DSA host key
 Generating public/private dsa key pair.
 Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
 Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
 The key fingerprint is:
 f9:a1:a9:47:c4:ad:f9:8d:52:b8:b8:ff:8c:ad:2d:e6 root@k6-2.example.com.
 setting ELF ldconfig path: /usr/lib /usr/lib/compat /usr/X11R6/lib
 /usr/local/lib
 a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout
 starting standard daemons: inetd cron sshd usbd sendmail.
 Initial rc.i386 initialization:.
 rc.i386 configuring syscons: blank_time screensaver moused.
 Additional ABI support: linux.
 Local package initialization:.
 Additional TCP options:.

 FreeBSD/i386 (k6-2.example.com) (ttyv0)

 login: rpratt
 Password:

   La generacion de claves RSA y DSA puede llevar su tiempo en maquinas
   lentas. Esto solamente sucede en el primer arranque despues de la
   instalacion. Los demas arranques seran mas rapidos.

   Si ya hay un servidor X configurado y ha elegido un escritorio por omision
   puede arrancarlo tecleando startx en la shell.

    2.10.16.2. El arranque de FreeBSD/alpha

   Una vez acabado el proceso de instalacion podra arrancar FreeBSD tecleando
   algo muy parecido a esto en el prompt de SRM:

   Once the install procedure has finished, you will be able to start FreeBSD
   by typing something like this to the SRM prompt:

 >>>BOOT DKC0

   Esto hace que el firmware arranque desde el disco especificado. Para que
   FreeBSD arranque automaticamente de ahi en adelante utilice lo siguiente:

 >>> SET BOOT_OSFLAGS A
 >>> SET BOOT_FILE ''
 >>> SET BOOTDEF_DEV DKC0
 >>> SET AUTO_ACTION BOOT

   Los mensajes de arranque seran muy similares (aunque no iguales) a los que
   aparecen durante el arranque de FreeBSD en i386(TM).

  2.10.17. El apagado de FreeBSD

   Es importante apagar correctamente el sistema operativo. No basta con
   darle al interruptor. Lo primero que debe hacer es convertirse en
   superusuario tecleando en la shell su e introduciendo la contrasena de
   root. Tenga en cuenta que esto funcionara solamente si el usuario es
   miembro del grupo wheel. Si no lo es siempre puede acceder al sistema como
   root y utilizar shutdown -h now.

 The operating system has halted.
 Please press any key to reboot.

   Una vez que vea el mensaje de <<Please press any key to reboot >> puede
   apagar la maquina. Si pulsa cualquier tecla en lugar de apagar la maquina
   el sistema reiniciara.

   Tambien puede usar la combinacion de teclas Ctrl+Alt+Supr para reiniciar
   el sistema, aunque no le recomendamos que lo haga durante el
   funcionamiento normal del sistema.

2.11. Solucion de problemas

   Esta seccion trata sobre la solucion de problemas habituales durante la
   instalacion que la comunidad de usuarios ha documentado. Hay tambien unas
   cuantas preguntas y respuestas para quienes quieren poder elegir en el
   arranque entre FreeBSD y MS-DOS(R).

  2.11.1. Que hacer si algo va mal

   A causa de las diversas limitaciones de la arquitectura PC es imposible
   hacer que nada funcione con un 100% de probabilidades, pero al menos hay
   unas cuantas cosas que pueden hacerse si algo va mal.

   Consulte la lista de hardware soportado de su version de FreeBSD y
   asegurese de que su hardware deberia funcionar con ella.

   Si su hardware esta soportado y sigue experimentando <<cuelgues>> u otro
   tipo de problemas tendra que compilar un kernel personalizado. Esto le
   permitira disponer de soporte que no esta incluido en el kernel GENERIC.
   El kernel que se incluye en los discos de arranque esta configurado
   asumiendo que la mayoria de los dispositivos van a funcionar con la
   configuracion por omision de fabrica (en terminos de IRQ, direcciones IO y
   canales DMA). Si su hardware ha sido reconfigurado quizas tendra que usar
   el editor de configuracion para decirle a FreeBSD donde encontrar cada
   cosa.

   Es posible tambien que la prueba de un dispositivo que no esta en el
   sistema cause problemas mas tarde al probar un dispositivo que si esta en
   la maquina. Si ese puede ser su caso desactive las pruebas de
   controladores conflictivos.

  Nota:

   Algunos problemas de instalacion pueden evitarse o al menos aliviarse
   actualizando el firmware de ciertos tipos de hardware; esto es
   especialmente cierto en el caso de las placas El firmware de las placas
   base se llama tambien BIOS y la mayoria de las placas base y de los
   fabricantes de computadoras tienen un sitio web en el que suelen
   encontrarse actualizaciones e informacion sobre su uso.

   La mayoria de los fabricantes recomienda que no se actualice la BIOS de la
   placa base a menos que tenga una buena razon para hacerlo, por ejemplo una
   actualizacion critica. El proceso de actualizacion podria fallar, lo que
   puede acarrrear danos en el chip de la BIOS.

  2.11.2. Uso de sistemas de ficheros de MS-DOS(R) y Windows(R)

   No puede usar sistemas de ficheros comprimidos con Double Space(TM).
   Debera por lo tanto descomprimir el sistema de ficheros antes de acceder a
   los datos desde FreeBSD. Ejecute el Agente de compresion desde Inicio>
   Programas > Herramientas del sistema.

   FreeBSD puede usar sistemas de ficheros MS-DOS(R). mount_msdos(8) inserta
   estos sistemas de ficheros en la jerarquia de directorios del sistema,
   haciendo posible el acceso a los datos. mount_msdos(8) no suele usarse
   directamente; el sistema lo utiliza debido a alguna entrada en /etc/fstab
   o porque mount(8) lo invoque debido a que se le hayan dado los parametros
   adecuados para ello.

   Veamos una de esas entradas en el fichero /etc/fstab:

 /dev/ad0sN  /dos  msdosfs rw  0 0

   El directorio /dos debe existir previamente o no funcionara. Tiene todos
   los detalles del formato correcto de las entradas en /etc/fstab en
   fstab(5).

   Veamos ahora un ejemplo de llamada de mount(8) a un sistema de ficheros
   MS-DOS(R):

 # mount_msdos /dev/ad0s1 /mnt

   En el ejemplo el sistema de ficheros MS-DOS(R) esta en la primera
   particion del primer disco duro. La situacion en su sistema puede ser
   diferente: compruebe la salida de dmesg y mount. Deberian darle suficiente
   informacion como para darle una idea completa de la estructura de
   particiones en la que esta trabajando.

  Nota:

   FreeBSD suele numerar las las <<slices>> (que es como decir los sistemas
   de ficheros MS-DOS(R)) de un modo distinto al de otros sistemas
   operativos. Mas concretamente, las particiones extendidas de MS-DOS(R)
   suelen tener un numero mayor de <<slice>> que las particiones primarias de
   MS-DOS(R). fdisk(8) le sera de ayuda a la hora de determinar que
   <<slices>> pertenecen a FreeBSD y cuales a otros sistemas operativos.

   Las particiones NTFS se montan de una forma muy similar gracias a
   mount_ntfs(8).

  2.11.3. Preguntas y respuestas de la resolucion de problemas

   2.11.3.1. Mi sistema se <<cuelga>> durante el arranque, o se comporta de
   modo extrano durante la instalacion, o no llega a comprobar el
   funcionamiento del lector de disquetes.

   2.11.3.2. Cuando voy a arrancar FreeBSD por primera vez despues de la
   instalacion el kernel carga y prueba mi hardware, pero se detiene y
   muestra mensajes como este:

   2.11.3.3. Cuando voy a arrancar desde disco duro por primera vez tras la
   instalacion de FreeBSD el prompt del gestor de arranque muestra F? en el
   menu de arranque y no pasa de ahi.

   2.11.3.4. El sistema encuentra mi tarjeta de red ed(4) pero me dan errores
   de <<timeout>>.

   2.11.3.1. Mi sistema se <<cuelga>> durante el arranque, o se comporta de   
             modo extrano durante la instalacion, o no llega a comprobar el   
             funcionamiento del lector de disquetes.                          
             FreeBSD utiliza profusamente el servicio ACPI del sistema en las 
             plataformas i386, amd64 e ia64 con el fin de ayudar en la        
             configuracion del sistema durante la deteccion de hardware       
             durante el arranque. Por desgracia todavia hay errores tanto en  
             el controlador ACPI como en algunas BIOS y placas base. Puede    
             desactivar ACPI en la tercera fase del cargador de arranque del  
             sistema haciendo que hint.acpi.0.disabled tenga el siguiente     
             valor:                                                           
                                                                              
             set hint.acpi.0.disabled="1"                                     
                                                                              
             Tenga en cuenta que tendria que volver a hacerlo cada vez que el 
             sistema arranque, asi que anada hint.acpi.0.disabled="1" al      
             fichero /boot/loader.conf. Tiene mas informacion sobre el        
             cargador de arranque en Seccion 12.1, "Sinopsis".                
   2.11.3.2. Cuando voy a arrancar FreeBSD por primera vez despues de la      
             instalacion el kernel carga y prueba mi hardware, pero se        
             detiene y muestra mensajes como este:                            
                                                                              
             changing root device to ad1s1a panic: cannot mount root          
                                                                              
             ?Cual es el problema?                                            
                                                                              
             ?Que es lo que significa este mensaje de                         
             bios_drive:interface(unit,partition)kernel_name que aparece en   
             la ayuda del arranque?                                           
             Hay un problema que ya lleva tiempo con nosotros cuando el disco 
             desde el que se arranca no es el primero en el sistema. La BIOS  
             utiliza un esquema de numeracion distinto al que usa FreeBSD y a 
             veces saber que numero es el que corresponde a que resulta un    
             poco complicado.                                                 
                                                                              
             Cuando el disco de arranque no sea el primer disco del sistema   
             FreeBSD necesitara un poco de ayuda para poderlo encontrar.      
             Puede haber dos escenarios donde suceda esto y en ambos hay que  
             decirle a FreeBSD, donde encontrar el sistema de ficheros raiz.  
             Esto se hace especificando el numero de disco segun la BIOS, el  
             tipo de disco y el numero de disco que FreeBSD le dara a ese     
             disco.                                                           
                                                                              
             El primer caso es cuando hay dos discos IDE, ambos configurados  
             como maestros de sus respectivos buses IDE y quiere usted        
             arrancar desde el segundo disco. La BIOS dice que son el disco 0 
             y el disco 1, mientras que FreeBSD los ve como ad0 y ad2.        
                                                                              
             FreeBSD esta en el disco BIOS 1, de tipo ad y el numero de disco 
             FreeBSD es el 2, asi que habra que decir lo siguiente:           
                                                                              
             1:ad(2,a)kernel                                                  
                                                                              
             Tenga en cuenta que si tiene un disco esclavo en el bus primario 
             esto no es necesario (de hecho es un error hacerlo).             
                                                                              
             El segundo escenario es el arranque desde un disco SCSI teniendo 
             uno o mas discos IDE en el sistema. En este caso el numero de    
             disco FreeBSD es mas bajo que el numero de disco BIOS. Si tiene  
             dos discos IDE ademas del disco SCSI, el disco SCSI es el disco  
             2 de BIOS, del tipo da y para FreeBSD es el disco numero disk    
             number 0, so 0, asi que tendra que usar                          
                                                                              
             2:da(0,a)kernel                                                  
                                                                              
             para decirle a FreeBSD que quiere arrancar desde el disco 2 de   
             BIOS, que es el primer disco SCSI del sistema. Si solamente      
             tiene un disco IDE tendra que poner 1:.                          
                                                                              
             Una vez que sabe con exactitud los valores que debe usar         
             pongalos exactamente como los ha tecleado en /boot.config        
             utilizando el editor de texto que prefiera. Salvo que se le diga 
             lo contrario FreeBSD utilizara el contenido de este fichero      
             decidirael comportamiento por omision del prompt de boot:        
             prompt.                                                          
   2.11.3.3. Cuando voy a arrancar desde disco duro por primera vez tras la   
             instalacion de FreeBSD el prompt del gestor de arranque muestra  
             F? en el menu de arranque y no pasa de ahi.                      
             La geometria del disco duro se configuro mal cuando se utilizo   
             el editor de particiones durante la instalacion. Ejecute el      
             editor de particiones e introduzca la geometria del disco        
             correctamente. Tendra que reinstalar FreeBSD completamente dado  
             que habra cambiado la geometria del disco.                       
                                                                              
             Si no encuentra la manera de saber cual es la geometria correcta 
             pruebe con esto: Cree una pequena particion DOS al principio del 
             disco e instale FreeBSD en el espacio de disco inmediatamente    
             contiguo. El programa de instalacion vera la particion DOS e     
             intentara deducir la geometria correcta a partir de ahi; esto    
             suele funcionar.                                                 
                                                                              
             Le mostramos otra sugerencia que, aunque no es recomendable de   
             seguir, se muestra para que sirva de referencia:                 
                                                                              
               Si lo que esta instalando es un servidor o maquina de          
               escritorio dedicado a FreeBSD y no le preocupa que en el       
               futuro cercano tenga que mantener la convivencia con DOS,      
               Linux u otro sistema operativo siempre tiene la opcion de      
               utilizar el disco entero (la opcion A en el editor de          
               particiones). Es una opcion no estandar gracias a la cual      
               FreeBSD ocupa todo el disco, desde el primer sector al ultimo. 
               De este modo nos olvidamos de todos los problemas relacionados 
               con la geometria de disco, pero le obliga a no poder instalar  
               ningun otro sistema operativo aparte de FreeBSD en ese disco.  
   2.11.3.4. El sistema encuentra mi tarjeta de red ed(4) pero me dan errores 
             de <<timeout>>.                                                  
             Lo mas probable es que su tarjeta este utilizando una IRQ        
             distinta de la que deberia estar usando segun lo que aparece en  
             /boot/device.hints . El controlador ed(4) no utiliza             
             configuracion does not use the <<soft>> por omision (es decir,   
             valores que se le suministren mediante EZSETUP bajo DOS) pero    
             como casi todo en esta vida hay solucion. En este caso, de       
             hecho, hay dos.                                                  
                                                                              
             Ponga el <<jumper>> de la tarjeta en una configuracion <<dura>>  
             (es posible que tenga que modificar la configuracion del kernel  
             debido a esto) o modifique el valor de la IRQ con el valor -1    
             del siguiente modo: by setting the hint hint.ed.0.irq="-1". Asi  
             le dira al kernel que utilice la configuracion <<suave>>.        
                                                                              
             Hay otra posibilidad, que es cuando su tarjeta este utilizando   
             la IRQ 9, que suele compartir funciones con la IRQ 2,            
             circunstancia que es con frecuencia causa de problemas (sobre    
             todo cuando entra en escena una tarjeta VGA que utiliza          
             justamente la IRQ 2). Le recomendamos encarecidamente que haga   
             todo lo posible para no utilizar ni la IRQ 2 ni la IRQ 9.        

2.12. Guia avanzada de instalacion

   Escrito por Valentino Vaschetto.

   This section describes how to install FreeBSD in exceptional cases.

  2.12.1. Instalacion de FreeBSD en un sistema sin monitor o teclado

   Es posible instalar FreeBSD en maquinas que no tengan teclado ni siquiera
   monitor conectado. De hecho no tienen por que tener ni salida VGA. ?Como
   es posible?, se preguntara: Haciendolo todo a traves de una consola serie.
   Una consola serie consiste basicamente en usar otro sistema como la
   pantalla y el teclado de una maquina. Siga las instrucciones de creacion
   de los disquetes que se detallan en la Seccion 2.3.7, "Preparacion del
   medio de arranque".

   Tendra que modificar esos disquetes para que arranquen en la consola
   serie; siga estas instrucciones:

    1. Modificacion de los disquetes de arranque para que permitan el
       arranque en la consola serie

       Si arrancara con los disquetes que acaba de crear FreeBSD arrancaria
       en el modo normal de instalacion. Lo que queremos es que FreeBSD
       arranque en una consola serie, asi que hemos de montar el disquete
       kern.flp en un sistema FreeBSD mediante mount(8).

 # mount /dev/fd0 /mnt

       Una vez montado el disquete entre en el directorio /mnt :

 # cd /mnt

       Aqui es donde ensenaremos al disquete a arrancar en la consola serie.
       Debe crearse un fichero llamado boot.config que contenga lo siguiente:
       /boot/loader -h. Con esto le pasamos cargador de arranque (el
       <<bootloader>>) el parametro necesario para que intente arrancar en
       una consola serie.

 # echo "/boot/loader -h" > boot.config

       Una vez configurado correctamente nuestro disquete lo desmontamos con
       umount(8):

 # cd /
 # umount /mnt

       Y podemos extraer el disquete de la unidad.

    2. Conexion del cable modem

       Tiene que conectar un cable modem nulo entre dos maquinas. Un cable
       serie normal no funcionara, necesitara un cable modem nulo porque
       tiene cruzado alguno de los hilos.

    3. Arranque de la instalacion

       Podemos iniciar la instalacion. Introduzca el disquete kern.flp en la
       unidad de disquetes de la maquina en la que quiere hacer la
       instalacion y encienda la maquina.

    4. La conexion a su maquina sin teclado ni monitor

       Conectese usando cu(1):

 # cu -l /dev/cuaa0

   ?Ya esta! Desde este momento ya puede controlar su maquina sin monitor ni
   teclado desde la sesion cu que acaba de abrir. El sistema le pedira que
   introduzca el disco kern1.flp y despues tendra que elegir que tipo de
   terminal va a utilizar. Elija la consola en color de FreeBSD y buena
   suerte con la instalacion.

2.13. Como preparar su propio medio de instalacion

  Nota:

    Para evitar la repeticion <<disco FreeBSD>> sera en adelante un CDROM o
   un DVD de FreeBSD que haya comprado o hecho por sus propios medios.

   Es posible que tengaque crear su propio medio de instalacion de FreeBSD.
   Puede tratarse de un medio fisico como una cinta o una fuente para que
   sysinstall pueda obtener los ficheros que vaya necesitando, como un sitio
   FTP local, o bien puede tratarse de una particion MS-DOS(R).

   Por ejemplo:

     * Tiene muchas maquinas conectadas a una red local y un solo disco
       FreeBSD. Quiere crear un sitio FTP local con el contenido del disco
       FreeBSD y que desde el sus maquinas obtengan los ficheros en lugar de
       tener que conectarse a Internet.

     * Tiene un disco FreeBSD y FreeBSD no reconoce su unidad CD/DVD pero
       MS-DOS(R)/Windows(R) si. Quiere copiar los ficheros de instalacion de
       FreeBSD a una particion DOS en mismo sistema y luego instalar FreeBSD
       usando esos ficheros.

     * El sistema en el que quiere instalar FreeBSD no tiene unidad CD/DVD ni
       tarjeta de red pero puede conectar un cable paralelo o un cable serie
       <<Laplink>> a una computadora que si que tiene.

     * Quiere crear una cinta desde la que se pueda instalar FreeBSD.

  2.13.1. Creacion de un CDROM de instalacion

   Con cada <<release>> el Proyecto FreeBSD libera dos imagenes de CDROM
   (<<imagenes ISO>>). Dichas imagenes pueden copiarse a CD si dispone de una
   grabadora y usarse posteriormente para instalar FreeBSD. Si tiene una
   grabadora de CD y el ancho de banda no le supone un problema la forma mas
   facil de instalar FreeBSD es esta.

    1. Descargar la imagen ISO correcta

       Puede descargar las imagenes ISO de cada <<release>> desde
       ftp://ftp.FreeBSD.org/pub/FreeBSD/ISO-IMAGES-arquitectura/version o
       desde la replica mas proxima. Sustituya arquitectura y version por lo
       que corresponda.

       Ese directorio contendra normalmente las siguientes imagenes:

       Tabla 2.4. Nombres y funciones de las imagenes de FreeBSD 6.X and 7.X

                    Nombre                            Contenido               
                                         Todo lo necesario para arrancar un   
                                         kernel de FreeBSD y ejecutar la      
       version-RELEASE-arch-bootonly.iso interfaz de instalacion. Los         
                                         ficheros que vayan haciendo falta    
                                         tendran que irse descargando por FTP 
                                         o por algun otro medio.              
                                         Todo lo necesario para instalar      
                                         AFreeBSD y un <<live filesystem>>,   
       version-RELEASE-arch-disc1.iso    que le sera muy util (conjuntamente  
                                         con la aplicacion <<Repair>> de      
                                         sysinstall.                          
       version-RELEASE-arch-disc2.iso    Todas las aplicaciones que puedan    
                                         caber en un disco.                   
       version-RELEASE-arch-docs.iso     La documentacioN de FreeBSD.         

       Descargue la imagen ISO de arranque (si existe para su plataforma) o
       la imagen del disco uno. No descargue ambas, puesto que el disco uno
       contiene todo lo que hay en la imagen ISO de arranque.

       Utilice la imagen ISO de arranque si su acceso a Internet es barato.
       Con ella podra instalar FreeBSD e instalar todo tipo de software
       descargandolo como paquetes/ports (consulte el Capitulo 4, Instalacion
       de aplicaciones: <<packages>> y ports) cuando lo precise.

       Utilice la imagen del disco uno si quiere disponer en el propio disco
       de una seleccion bastante completa de software.

       Si tiene acceso de alta velocidad a Internet las demas imagenes de
       disco son utiles pero no esenciales.

    2. Escribir los CD

       Si va a grabar los CD en un sistema FreeBSD consulte la Seccion 18.6,
       "Creacion y uso de medios opticos (CD)" (en particular la
       Seccion 18.6.3, "burncd" y la Seccion 18.6.4, "cdrecord").

       Las imagenes se hacen en un formato ISO estandar; si va a grabarlas en
       cualquier otra plataforma no deberia tener problemas para hacerlo
       cualquiera que sea la aplicacion que use para grabar CD.

  Nota:

   Si lo que quiere hacer es crear una <<release>> personalizada de FreeBSD
   consulte el articulo Release Engineering.

  2.13.2. Creacion de un sitio FTP local a partir de un disco de instalacion de
  FreeBSD

   Los discos de FreeBSD tienen la misma estructura que los sitios FTP. Esa
   circunstancia le facilitara mucho la tarea de crear un sitio FTP local
   para uso de otras maquinas de su red durante la instalacion de FreeBSD.

    1. Monte el CDROM en el directorio /cdrom del sistema que va a albergar
       el sitio FTP.

 # mount /cdrom

    2. Cree una cuenta apta para FTP anonimo en /etc/passwd editando
       /etc/passwd con vipw(8). Anadale lo siguiente:

 ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent

    3. Compruebe que el servicio FTP esta activado en /etc/inetd.conf.

   Ahora cualquier maquina capaz de conectarse a su sistema a traves de una
   red puede elegir como medio de instalacion <<FTP>> y escribir ftp://su
   maquina tras seleccionar <<Other>> en el menu de sitios FTP.

  Aviso:

    Acabamos de exponer una buena solucion para usar en un sistema de su
   propia red y que ademas esta protegido por un cortafuegos. Si ofrece
   servicios FTP a maquinas de Internet (y no de su red local) expone su
   sistema a caer bajo la atencion de <<crackers>> y otras variedades de
   indeseable. Le recomendamos encarecidamente que siga a rajatabla politicas
   sensatas de seguridad.

  2.13.3. Creacion de disquetes de instalacion

   Si quiere instalar FreeBSD desde disquetes (cosa que, de antemano, le
   sugerimos que no haga) bien sea porque FreeBSD no soporta cierto
   componente necesario de su sistema o sencillamente porque insiste en
   querer hacer las cosas de la manera mas dificil, tendra que tener a mano
   unos cuantos disquetes.

   Como minimo necesitara tantos disquetes de 1.44 MB o 1.2 MB como hagan
   falta para dar cabida a todos los ficheros que hay en bin. Recuerde la
   entrada <<binary distribution>> (distribucion binaria) durante la
   instalacion. Si esta generando los disquetes en DOS debe formatearlos con
   FORMAT de MS-DOS(R). Si esta usando Windows(R) puede usar el Explorador
   para formatear disquetes: boton derecho del raton sobre la unidad A: y
   elija <<Formatear>>.

    No confie en el preformateo de fabrica de los disquetes. Formateelos
   usted de nuevo, solo para asegurarse. La mayoria de los problemas de los
   que se ha informado se han debido a formateos defectuosos, tengalo en
   cuenta.

   Si puede crear los disquetes en una maquina FreeBSD un formateo sigue sin
   ser una mala idea, pero no necesitara crear un sistema de ficheros DOS en
   cada floppy. Use disklabel y newfs para crear un sistema de ficheros UFS
   en los disquetes tal y como se muestra aqui (en un floppy de 1.44 MB y
   3.5") :

 # fdformat -f 1440 fd0.1440
 # disklabel -w -r fd0.1440 floppy3
 # newfs -t 2 -u 18 -l 1 -i 65536 /dev/fd0

  Nota:

    Tendra que usar fd0.1200 y floppy5 si usa discos de 5.25" y 1.2 MB.

   Ahora puede montarlos y escribir en ellos igual que en cualquier otro
   sistema de ficheros del sistema.

   Tras el formateo de los disquetes pasamos a llenarlos. Los ficheros
   necesarios para crear la distribucion se dividen en partes de tamano
   regular de modo que cinco de ellas entren en otros tantos disquetes de
   1.44 MB. Empaquete tantos ficheros como pueda en cada uno hasta que tenga
   todas las distribuciones que necesita listas para pasar a los disquetes.
   Cada distribucion deberia ir en un subdirectorio del floppy, por ejemplo
   a:\bin\bin.aa, a:\bin\bin.ab, etc.

   Una vez en el menu de seleccion de medio de instalacion elija Floppy y
   siga las instrucciones.

  2.13.4. Instalacion desde una particion MS-DOS(R)

   Copie los ficheros de la distribucion en un directorio llamado freebsd en
   el directorio raiz de la particion, por ejemplo c:\freebsd. La estructura
   de directorios del sitio FTP o el CDROM debe reproducirse parcialmente en
   este directorio, asi que le sugerimos que use xcopy si esta copiando los
   datos desde un CD. En el siguiente ejemplo vamos a preparar una
   instalacion minima de FreeBSD:

 C:\> md c:\freebsd
 C:\> xcopy e:\bin c:\freebsd\bin\ /s
 C:\> xcopy e:\manpages c:\freebsd\manpages\ /s

   Se ha asumido que C: es donde tiene espacio libre y E: es donde tiene
   montada su unidad CDROM.

   Si no tiene unidad CDROM puede descargar la distribucion desde
   ftp.FreeBSD.org. Cada distribucion dispone de su propio directorio; por
   ejemplo, la distribucion base esta en el directorio11.1/base/.

   La unica distribucion imprescindible es BIN. Guarde esta y todas las
   distribuciones que quiera instalar desde una particion MS-DOS(R) bajo
   c:\freebsd.

  2.13.5. Creacion de una cinta de instalacion

   La instalacion desde cinta es probablemente el metodo mas facil, casi
   tanto como una instalacion desde una replica FTP o desde un CDROM. Lo
   unico que el programa de instalacion necesita es que los ficheros esten
   empaquetados con tar y en una cinta. Veamos un ejemplo:

 # cd /freebsd/distdir
 # tar cvf /dev/rwt0 dist1 ... dist2

   Cuando este preparando la instalacion tenga la precaucion de dejar sitio
   suficiente en algun directorio temporal (accesible en ese momento) para
   dejar todos los ficheros que hubiera en la cinta de instalacion. A causa
   del acceso secuencial propio del diseno de las cintas este metodo de
   instalacion requiere un poco de almacenamiento temporal.

  Nota:

    Recuerde que antes de arrancar desde el disquete de arranque la cinta
   debe estar en la unidad. La prueba de hardware de la instalacion no
   encontraria la cinta.

  2.13.6. Before Installing over a Network

   Hay tres tipos de instalacion a traves de una red disponibles en FreeBSD:
   Puerto serie (SLIP o PPP), puerto paralelo (PLIP (cable <<laplink>>)) y
   Ethernet.

   El adaptador Ethernet es, debido a su velocidad de transferencia, la mejor
   eleccion. FreeBSD soporta la mayoria de los adaptadores Ethernet. Tiene
   una lista de dispositivos soportados en las notas de hardware de cada
   <<release>> de FreeBSD. Si disponde alguno de los adaptadores Ethernet
   PCMCIA soportados por FreeBSD recuerde que debe estar presente en el
   sistema antes de que el sistema arranque. Por desgracia FreeBSD no soporta
   aun la insercion en caliente de tarjetas PCMCIA durante la instalacion.

   Tendra que saber tambien la direccion IP de la red, la mascara de red
   correcta para la clase de su red y el nombre de su maquina. Si va a
   instalar mediante una conexion PPP y no tiene IP estatica no se preocupe,
   su ISP puede asignarle una IP temporal dinamicamente. Su administrador de
   sistemas seguramente puede ayudarle con la configuracion de su red. Si va
   a intentar conectarse con otras maquinas mediante sus nombres en lugar de
   sus direcciones IP necesitara los datos de un servidor de nombres y es
   posible que necesite tambien la direccion de un <<gateway>> (si usa PPP
   vale con la direccion IP de su proveedor). Si va a instalar por FTP a
   traves de un proxy HTTP necesitara la direccion del proxy. Si no sabe que
   pueden significar todas (o la mayoria) de estas preguntas hable con su
   administrador de sistemas o con su ISP antes de intentar instalar FreeBSD
   de esta forma.

    2.13.6.1. Antes de instalar via NFS

   La instalacion por NFS es bastante sencilla. Solo tendra que copiar los
   ficheros de la distribucion a un servidor NFS, seleccionar NFS como medio
   de instalacion y apuntar a los contenidos a donde los haya copiado.

   si el servidor solo soporta <<puertos privilegiados>> (que suele ser la
   configuracion por omision en estaciones de trabajo Sun) tendra que
   seleccionar la opcion NFS Secure en el menu <<Options>> antes de comenzar
   con la instalacion.

   Si usa tarjeta Ethernet de mala calidad y esta experimentando velocidades
   de transferencia muy bajas puede probar con el parametro NFS Slow.

   Para que la instalacion via NFS funcione el servidor debe permitir el
   montaje de subdirectorios. Por ejemplo, si su distribucion FreeBSD 11.1
   esta en ziggy:/usr/archive/stuff/FreeBSD el servidor ziggy tendra que
   permitir que pueda montarse /usr/archive/stuff/FreeBSD, no simplemente
   como /usr o /usr/archive/stuff.

   En el fichero /etc/exports de FreeBSD eso puede controlarse mediante la
   opcion -alldirs. Puede que otros servidores NFS requieran de parametros
   diferentes. Si ve mensajes de permission denied seguramente no ha activado
   esto correctamente.

Capitulo 3. Conceptos basicos de Unix

   Reescrito por Chris Shumway.
   Tabla de contenidos

   3.1. Sinopsis

   3.2. Consolas virtuales y terminales

   3.3. Permisos

   3.4. Estructura de directorios

   3.5. Organizacion de disco

   3.6. Montaje y desmontaje de sistemas de ficheros

   3.7. Procesos

   3.8. Daemons, senales y como matar procesos

   3.9. Shells

   3.10. Editores de texto

   3.11. Dispositivos y nodos de dispositivos

   3.12. Formatos binarios

   3.13. Mas informacion

3.1. Sinopsis

   El siguiente capitulo comprende la funcionalidad y ordenes basicas del
   sistema operativo FreeBSD. Gran parte de este material es relevante para
   cualquier sistema operativo tipo UNIX(R). Puede saltarse este capitulo si
   considera que ya conoce el funcionamiento de UNIX(R). Si no tiene
   experiencia previa con FreeBSD deberia leer este capitulo con mucha
   atencion.

   Despues de leer este capitulo, usted sabra:

     * Como usar las <<consolas virtuales>> de FreeBSD.

     * Como funcionan los permisos de fichero UNIX(R) en relacion con las
       banderas de fichero en FreeBSD.

     * La disposicion de sistemas de ficheros por omision en FreeBSD.

     * La organizacion de disco de FreeBSD.

     * Como montar y desmontar sistemas de ficheros.

     * Que son los procesos, daemons y senales.

     * Que es una shell, como modificar sus variables de entorno por omision.

     * Como utilizar editores de texto basicos.

     * Que son los dispositivos y nodos de dispositivos.

     * Que formato binario se usa en FreeBSD.

     * Como buscar informacion en las paginas de manual.

3.2. Consolas virtuales y terminales

   FreeBSD puede utilizarse de muchas maneras. Una de ellas es tecleando
   ordenes en una terminal de texto. De este modo, mucha de la flexibilidad y
   poder de un sistema operativo UNIX(R) esta inmediatamente en sus manos
   cuando usa FreeBSD. Esta seccion describe que son <<terminales>> y
   <<consolas>> y como puede usarlas en FreeBSD.

  3.2.1. La consola

   Si no ha configurado FreeBSD para ejecutar automaticamente un entorno
   grafico en el arranque, el sistema le presentara un <<prompt>> de entrada
   despues del arranque, inmediatamente despues de que los <<scripts>> de
   inicio terminen de ejecutarse. Vera algo similar a esto:

 Additional ABI support:.
 Local package initialization:.
 Additional TCP options:.

 Fri Sep 20 13:01:06 EEST 2002

 FreeBSD/i386 (pc3.ejemplo.org) (ttyv0)

 login:

   Los mensajes pueden ser un poco diferentes en su sistema, pero vera algo
   similar. Las ultimas dos lineas son las que nos interesan por el momento.
   La penultima linea dice:

 FreeBSD/i386 (pc3.ejemplo.org) (ttyv0)

   Esta linea contiene informacion acerca del sistema que acaba de arrancar.
   Esta usted ante una consola <<FreeBSD>> que se ejecuta en un procesador
   Intel o compatible de la arquitectura x86[1]. El nombre de esta maquina
   (todas las maquinas UNIX(R) tiene un nombre) es pc3.ejemplo.org, y usted
   esta ahora ante su consola de sistema (la terminal ttyv0).

   Para acabar, la ultima linea siempre es:

 login:

   Este es el lugar donde se usted tecleara su <<nombre de usuario>> para
   entrar en FreeBSD. La siguiente seccion describe como hacerlo.

  3.2.2. La entrada a FreeBSD

   FreeBSD es un sistema multiusuario multiprocesador. Esta es la descripcion
   formal que se suele dar a un sistema que puede ser utilizado por muchas
   personas diferentes, que simultaneamente ejecutan muchos programas en un
   sola maquina.

   Cada sistema multiusuario necesita algun modo de distinguir a un
   <<usuario>> del resto. En FreeBSD (y en todos los sistemas operativos de
   tipo UNIX(R)) esto se logra requiriendo que cada usuario <<acceda>> al
   sistema antes de poder ejecutar programas. Cada usuario tiene un nombre
   unico (el <<nombre de usuario>>) y una clave secreta, personal (la
   <<contrasena>>). FreeBSD preguntara por ambos antes de permitirle a un
   usuario ejecutar cualquier programa.

   Justo despues de que FreeBSD arranque y termine de ejecutar sus
   <<scripts>> de inicio [2], le presentara un <<prompt>> y solicitara un
   nombre valido de usuario:

 login:

   En este ejemplo vamos a asumir que su nombre de usuario es john. Teclee
   john en el <<prompt>> y pulse Intro. Deberia presentarsele un <<prompt>>
   donde introducir una <<contrasena>>:

 login: john
 Password:

   Teclee ahora la contrasena de john y pulse Enter. La contrasena no se
   muestra en pantalla, pero no debe preocuparse por ello. Esto se hace asi
   por motivos de seguridad.

   Si ha tecleado su contrasena correctamente ya esta usted en un sistema
   FreeBSD, listo para probar todas las ordenes disponibles.

   Vera el MOTD (mensaje del dia) seguido por un <<prompt>> (un caracter #, $
   o %). Esto confirma que ha validado con exito su usuario en FreeBSD.

  3.2.3. Consolas multiples

   Ejecutar ordenes UNIX(R) en una consola esta bien, pero FreeBSD puede
   ejecutar muchos programas a la vez. Tener una consola donde se pueden
   teclear ordenes puede ser un desperdicio cuando un sistema operativo como
   FreeBSD puede ejecutar docenas de programas al mismo tiempo. Aqui es donde
   las <<consolas virtuales>> muestran su potencial.

   FreeBSD puede configurarse para presentarle diferentes consolas virtuales.
   Puede cambiar de una de ellas a cualquier otra consola virtual pulsando un
   par de teclas en su teclado. Cada consola tiene su propio canal de salida,
   y FreeBSD se ocupa de redirigir correctamente la entrada del teclado y la
   salida al monitor cuando cambia de una consola virtual a la siguiente.

   Se han reservado ciertas combinaciones especiales de teclas para pasar de
   unas consolas virtuales a otras en FreeBSD [3]. Puede utilizar Alt+F1,
   Alt+F2 y asi sucesivamente hasta Alt+F8 para cambiar a una consola virtual
   diferente en FreeBSD.

   Mientras esta cambiando de una consola a la siguiente, FreeBSD se ocupa de
   guardar y restaurar la salida de pantalla. El resultado es la <<ilusion>>
   de tener varias pantallas y teclados <<virtuales>> que puede utilizar para
   teclear ordenes para que FreeBSD los ejecute. El programa que usted lanza
   en una consola virtual no deja de ejecutarse cuando la consola no esta
   visible. Continuan ejecutandose cuando se cambia a una consola virtual
   diferente.

  3.2.4. El fichero /etc/ttys

   La configuracion por omision de FreeBSD iniciara con ocho consolas
   virtuales. No es una configuracion estatica por hardware, asi que puede
   personalizar facilmente su sistema para arrancar con mas o menos consolas
   virtuales. El numero y propiedades de las consolas virtuales estan
   detallados en /etc/ttys.

   En /etc/ttys es donde se configuran las consolas virtuales de FreeBSD.
   Cada linea no comentada de este fichero (lineas que no comienzan con un
   caracter #) contiene propiedades para una sola terminal o consola virtual.
   La version por omision de este fichero en FreeBSD configura nueve consolas
   virtuales y habilita ocho de ellas. Son las lineas que comienzan con ttyv:

 # name  getty                           type    status          comments
 #
 ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
 # Virtual terminals
 ttyv1   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv2   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv3   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv4   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv5   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv6   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv7   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

   Consulte ttys(5) si quiere una descripcion detallada de cada columna en
   este fichero y todas las opciones que puede usar para configurar las
   consolas virtuales.

  3.2.5. Consola en modo monousuario

   En la Seccion 12.6.2, "Modo monousuario" encontrara una descripcion
   detallada de lo que es <<modo monousuario>>. No importa que solo exista
   una consola cuando ejecuta FreeBSD en modo monousuario. No hay otra
   consola virtual disponible. Las configuraciones de la consola en modo
   monousuario se pueden encontrar tambien en /etc/ttys. Busque la linea que
   comienza por console:

 # name  getty                           type    status          comments
 #
 # Si la consola esta marcada como "insecure", entonces init
 # le pedira la contrasena de root al entrar a modo monousuario.
 console none                            unknown off secure

  Nota:

   Tal y como indican los comentarios por encima de la linea console, puede
   editar esta linea y cambiar secure por insecure. Si lo hace, cuando
   FreeBSD arranque en modo monousuario el sistema le pedira la contrasena de
   root.

   Tenga cuidado si cambia esto a insecure. Si olvida la contrasena de root
   arrancar en modo monousuario sera con seguridad mas complicado. Sigue
   siendo posible, pero sera un poco dificil para alguien que no este
   familiarizado con le proceso de arranque de FreeBSD y los programas
   involucrados en dicho proceso.

  3.2.6. Cambio del modo de video de la consola

   La consola FreeBSD por omision tiene un modo de video que puede ajustarse
   a 1024x768, 1280x1024 o cualquier otra resolucion que admita su chip
   grafico y su monitor. Si quiere utilizar uno diferente tendra que
   recompilar su kernel con estas dos opciones anadidas:

 options VESA
 options SC_PIXEL_MODE

   Una vez recompilado el kernel con esas dos opciones en el determine que
   modos de video admite su hardware; para ello use vidcontrol(1). Con lo
   siguiente le mostrara una lista de modos de video soportados:

 # vidcontrol -i mode

   La salida de esta orden es una lista de los modos de que admite su
   tarjeta. Para elegir uno de ellos tendra que ejecutar vidcontrol(1) en una
   consola como root:

 # vidcontrol MODE_279

   Si el modo de video que ha elegido le parece adecuado puede configurarlo
   de forma permanente haciendo que funcione desde el momento del arranque;
   para ello debe editar /etc/rc.conf file:

 allscreens_flags="MODE_279"

3.3. Permisos

   FreeBSD, cuya raiz historica es el UNIX(R) BSD, se fundamenta en varios
   conceptos clave de UNIX. El primero y mas importante es que FreeBSD es un
   sistema operativo multi-usuario. El sistema puede gestionar multiples
   usuarios trabajando simultaneamente y en tareas que no guarden relacion
   entre si. El sistema se encarga de compartir y administrar peticiones de
   dispositivos de hardware, perifericos, memoria y tiempo de CPU de manera
   equitativa para cada usuario.

   Debido a que el sistema es capaz de soportar multiples usuarios, todo lo
   que el sistema administra tiene un conjunto de permisos que usa para
   decidir quien puede leer, escribir y ejecutar un recurso. Estos permisos
   se guardan como octetos divididos en tres partes: una para el propietario
   del fichero, otra para el grupo al que el fichero pertenece, y otra para
   todos los demas grupos y usuarios. Veamos una representacion numerica de
   esto:

     Valor                   Permiso                  Listado de directorio   
   0          No leer, no escribir, no ejecutar     ---                       
   1          No leer, no escribir, ejecutar        --x                       
   2          No leer, escribir, no ejecutar        -w-                       
   3          No leer, escribir, ejecutar           -wx                       
   4          Leer, no escribir, no ejecutar        r--                       
   5          Leer, no escribir, ejecutar           r-x                       
   6          Leer, escribir, no ejecutar           rw-                       
   7          Leer, escribir, ejecutar              rwx                       

   Puede utilizar el parametro de linea de ordenes -l de ls(1) para ver un
   listado largo que incluya una columna con informacion acerca de los
   permisos de fichero para el propietario, grupo y los demas. Por ejemplo,
   un ls -l en un directorio puede mostrar algo como esto:

 % ls -l
 total 530
 -rw-r--r--  1 root  wheel     512 Sep  5 12:31 mifichero
 -rw-r--r--  1 root  wheel     512 Sep  5 12:31 otrofichero
 -rw-r--r--  1 root  wheel    7680 Sep  5 12:31 email.txt
 ...

   Aqui esta como se divide la primera columna de ls -l:

 -rw-r--r--

   El primer caracter (mas a la izquierda) indica si este fichero es un
   fichero regular, un directorio, un dispositivo especial de caracter, un
   socket o cualquier otro dispositivo especial pseudo-ficheroa . En este
   caso, el - un fichero regular. Los siguientes tres caracteres, rw- en este
   ejemplo, dan los permisos para el propietario del fichero. Los siguientes
   tres caracteres, r--, dan los permisos para el grupo al que el fichero
   pertenece. Los ultimos tres caracteres, r--, dan los permisos para el
   resto del mundo. Un guion indica que el permiso esta desactivado. En el
   caso de este fichero, los permisos estan asignados de tal manera que el
   propietario puede leer y escribir en el fichero, el grupo puede leer el
   fichero, y el resto del mundo solo puede leer el fichero. De acuerdo con
   la tabla de arriba, los permisos para este fichero serian 644, donde cada
   digito representa las tres partes de los permisos del fichero.

   Todo esto esta muy bien, pero ?como controla el sistema los permisos de
   los dispositivos? FreeBSD en realidad trata la mayoria de los dispositivos
   hardware como un fichero que los programas pueden abrir, leer y en los que
   pueden escribir datos como si de cualquier otro fichero se tratara. Estos
   ficheros especiales de dispositivo se encuentran en el directorio /dev.

   Los directorios tambien son tratados como ficheros. Tienen permisos de
   lectura, escritura y ejecucion. El bit de ejecucion en un directorio tiene
   un significado ligeramente distinto que para los ficheros. Cuando un
   directorio esta marcado como ejecutable significa que se puede mirar
   dentro, se puede hacer un <<cd>> (cambiar directorio) a el. Esto tambien
   significa que dentro del directorio es posible acceder a ficheros cuyos
   nombres son conocidos (sujeto, claro esta, a los permisos de los ficheros
   mismos).

   En particular, para poder realizar un listado de directorio, el permiso de
   lectura debe ser activado en el directorio, mientras que para borrar un
   fichero del que se conoce el nombre es necesario tener permisos de
   escritura y ejecucion en el directorio que contiene el fichero.

   Existen mas permisos, pero se usan principalmente en circunstancias
   especiales como los binarios ejecutables de tipo setuid y los los
   directorios de tipo <<sticky>>. Si desea mas informacion acerca de los
   permisos de ficheros y como establecerlos, consulte chmod(1).

  3.3.1. Permisos simbolicos

   Escrito por Tom Rhodes.

   Los permisos simbolicos, tambien conocidos como expresiones simbolicas,
   utilizan caracteres en lugar de valores octales para asignar permisos a
   ficheros o directorios. Las expresiones simbolicas utilizan la sintaxis de
   (quien) (accion) (permisos) mediante los siguientes valores:

         Opcion            Letra                    Representa                
   (quien)             u              Usuario                                 
   (quien)             g              Grupo propietario                       
   (quien)             o              Otro                                    
   (quien)             a              Todos (<<todo el mundo>>)               
   (accion)            +              Anadir permisos                         
   (accion)            -              Quitar permisos                         
   (accion)            =              Activar permisos explicitamente         
   (permisos)          r              Lectura                                 
   (permisos)          w              Escritura                               
   (permisos)          x              Ejecucion                               
   (permisos)          t              Bit Sticky (<<pegajoso>>)               
   (permisos)          s              Activar UID o GID                       

   Estos valores se aplican con chmod(1) de la misma manera que los
   anteriores, pero con letras. Por ejemplo, podria usar la siguiente orden
   para bloquear a otros usuarios el acceso a FICHERO:

 % chmod go= FICHERO

   Puede usarse una lista separada por comas cuando se quiera aplicar mas de
   un conjunto de cambios a un fichero. Por ejemplo la siguiente orden
   eliminara los permisos de escritura de grupo y <<mundo>> a FICHERO, y
   anade permisos de ejecucion para todos:

 % chmod go-w,a+x FILE

  3.3.2. Banderas de fichero en FreeBSD

   Escrito por Tom Rhodes.

   Ademas de los permisos de fichero previamente expuestos, FreeBSD permite
   el uso de <<banderas de fichero>>. Estas banderas anaden un nivel de
   seguridad y control adicional a los ficheros, pero no a los directorios.

   Las banderas de fichero anaden un nivel adicional de control sobre los
   ficheros ayudando a asegurar que en algunos casos ni siquiera root pueda
   eliminar o alterar ficheros.

   Las banderas de fichero se modifican mediante chflags(1), gracias a una
   interfaz muy sencilla. Por ejemplo, para habilitar la bandera imborrable
   de sistema en fichero1, escriba lo siguiente:

 # chflags sunlink fichero1

   Y para dehabilitar la bandera imborrable de sistema, simplemente escriba
   la orden previa con <<no>> antes de sunlink. Observe:

 # chflags nosunlink fichero1

   Para ver las banderas de este fichero, utilice ls(1) con las opciones -lo:

 # ls -lo fichero1
        

   La salida deberia ser como esta:

 -rw-r--r--  1 trhodes  trhodes  sunlnk 0 Mar  1 05:54 fichero1

   Varias banderas solo pueden ser anadidas o retiradas de ficheros por el
   usuario root. En otros casos, el propietario del fichero puede activar
   estas banderas. Se recomienda que para mas informacion la persona
   encargada de la administracion del sistema consulte las paginas de manual
   chflags(1) y chflags(2).

  3.3.3. Los permisos setuid, setgid y sticky

   Escrito por Tom Rhodes.

   Ademas de los permisos que se han explicado hay mas, hay tres tipos mas
   que todos los administradores deberian conocer. Son los permisos setuid,
   setgid y sticky.

   Estos permisos juegan un papel clave en ciertas operaciones UNIX(R) puesto
   que facilitan funcionalidades que no se suelen permitir a los usuarios
   normales. Para comprenderlas totalmente hay que comprender la diferencia
   entre el ID real del usuario y el ID efectivo.

   El ID del usuario real es el UID que arranca (y el propietario) del
   proceso. El UID efectivo es el ID bajo el que se ejecuta el proceso.
   Veamos un ejemplo; el programa passwd(1) se ejecuta con el ID real del
   usuario puesto que el usuario esta cambiando su contrasena. Pero para
   poder manipular la base de datos de contrasenas debe ejecutarse con el ID
   efectivo del usuario root. De este modo es posible que los usuarios
   cambien su contrasena sin llegar a ver un error de Permission Denied
   (permiso denegado).

  Nota:

   La opcion nosuid de mount(8) hace que estos binarios den errores
   silenciosos, es decir, fallaran pero el usuario no recibira ningun mensaje
   de error por ello. Esta opcion no funciona siempre, pues, segun la pagina
   man de mount(8), un <<wrapper>> nosuid puede sortear esta limitacion.

   El permiso setuid puede asignarse colocando un numero cuatro (4) antes de
   los permisos. Se ve mejor con un ejemplo:

 # chmod 4755 ejemplosuid.sh

   Los permisos de ejemplosuid.sh deberian ser asi:

 -rwsr-xr-x   1 trhodes  trhodes    63 Aug 29 06:36 ejemplosuid.sh

   Fijese atentamente en la s que ha aparecido en los permisos del fichero,
   en la parte de los permisos del propietario; esa s esta en donde estaria
   el bit de ejecucion. Gracias a esto el funcionamiento de aplicaciones que
   necesitan permisos elevados, como passwd, pueden funcionar.

   Si quiere ver un ejemplo con sus propios ojos abra dos terminales. En una
   arranque un proceso (ejecute) passwd con un usuario normal. Mientras la
   aplicacion espera a que le de una nueva contrasena busque la informacion
   de usuario del proceso passwd en la tabla de procesos.

   En la terminal A:

 Changing local password for trhodes
 Old Password:

   En la terminal B:

 # ps aux | grep passwd

 trhodes  5232  0.0  0.2  3420  1608   0  R+    2:10AM   0:00.00 grep passwd
 root     5211  0.0  0.2  3620  1724   2  I+    2:09AM   0:00.01 passwd

   Tal y como se ha dicho, un usuario normal puede ejecutar passwd, pero en
   realidad esta utilizando el UID efectivo de root.

   El permiso setgid actua del mismo modo que el setuid, pero afecta a los
   permisos del grupo. Cuando una aplicacion funciona con esta configuracion
   lo hace con los permisos del grupo al que pertenece el fichero, no los del
   usuario que ha arrancado el proceso.

   Si quiere utilizar el permiso setgid debe situar un nunmero dos (2) al
   principio de los permisos que vaya a asignar mediante chmod.

 # chmod 2755 ejemplosuid.sh

   La nueva configuracion tiene un aspecto muy similar a la que tenia antes,
   pero observe que la s de antes esta ahora en el campo de los permisos de
   grupo:

 -rwxr-sr-x   1 trhodes  trhodes    44 Aug 31 01:49 ejemplosuid.sh

  Nota:

   En ambos ejemplos, incluso si el <<script>> en cuestion es ejecutable, no
   se va a ejecutar con un EUID distinto o un ID efectivo de usuario porque
   los <<scripts>> de shell no pueden acceder a la llama del sistema
   setuid(2).

   Los dos permisos que acabamos de mostrar los bits de permisos (setuid y
   setgid) pueden reducir el nivel de seguridad haciendo que se escalen los
   permisos. Pero hay un tercer bit especial de permisos que puede ser de
   mucha ayuda para reforzar la seguridad del sistema: el sticky bit.

   El sticky bit( que podriamos traducir como <<bit pegajoso>>) aplicado a un
   directorio hace que solamente el propietario de un fichero pueda borrarlo.
   Esto evita el borrado de ficheros ajenos en directorios publicos como
   /tmp. Si quiere usarlo coloque un uno (1) antes de los permisos. Veamos un
   ejemplo:

 # chmod 1777 /tmp

   Para ver el ;sticky bit en accion usamos ls:

 # ls -al / | grep tmp

 drwxrwxrwt  10 root  wheel         512 Aug 31 01:49 tmp

   El sticky bit es la letra t al final de los permisos.

3.4. Estructura de directorios

   La jerarquia del sistema de ficheros de FreeBSD es fundamental para
   obtener una compresion completa del sistema. El concepto mas importante a
   entender es el del directorio raiz, <</>>. Este directorio es el primero
   en ser montado en el arranque y contiene el sistema basico necesario para
   preparar el sistema operativo para su funcionamiento en modo multiusuario.
   El directorio raiz tambien contiene puntos de montaje para cualquier otro
   sistema de ficheros que se pretenda montar.

   Un punto de montaje es un directorio del que se pueden colgar sistemas de
   ficheros adicionales en un sistema padre (que suele ser el directorio
   raiz). Esto se explica con detalle en la Seccion 3.5, "Organizacion de
   disco". Los puntos de montaje estandar son, por ejemplo, /usr, /var, /tmp,
   /mnt y /cdrom. Estos directorios suelen corresponderse con entradas en
   /etc/fstab. /etc/fstab es una tabla que sirve de referencia al sistema y
   contiene los diferentes sistemas de ficheros y sus respectivos puntos de
   montaje. La mayoria de los sistemas de ficheros en /etc/fstab se montan
   automaticamente en el arranque gracias al <<script>> rc(8), a menos que
   contengan la opcion noauto. Si quiere mas informacion consulte la
   Seccion 3.6.1, "El fichero fstab".

   Veremos ahora una descripcion de los directorios mas comunes. Si desea
   informacion mas completa consulte hier(7).

     Directorio                           Descripcion                         
   /               Directorio raiz del sistema de ficheros.                   
   /bin/           Utilidades de usuario fundamentales tanto para el ambiente 
                   monousuario como para el multiusuario.                     
   /boot/          Programas y ficheros de configuracion necesarios durante   
                   el arranque del sistema operativo.                         
   /boot/defaults/ Ficheros de configuracion por omision del arranque; ver    
                   loader.conf(5).                                            
   /dev/           Nodos de dispositivo; ver intro(4).                        
   /etc/           Ficheros de configuracion y <<scripts>> del sistema.       
   /etc/defaults/  Ficheros de configuracion por omision del sistema; ver     
                   rc(8).                                                     
   /etc/mail/      Ficheros de configuracion para agentes de transporte de    
                   correo como sendmail(8).                                   
   /etc/namedb/    Ficheros de configuracion de named; ver named(8).          
   /etc/periodic/  <<Scripts>> que se ejecutan diariamente, semanalmente y    
                   mensualmente mediante cron(8); ver periodic(8).            
   /etc/ppp/       Ficheros de configuracion de ppp; ver ppp(8).              
   /mnt/           Directorio vacio utilizado de forma habitual por           
                   administradores de sistemas como punto de montaje          
                   temporal.                                                  
   /proc/          Sistema de ficheros de procesos; ver procfs(5),            
                   mount_procfs(8).                                           
   /rescue/        Programas enlazados estaticamente para restauraciones de   
                   emergencia; ver rescue(8).                                 
   /root/          Directorio local para la cuenta root.                      
   /sbin/          Programas del sistema y utilidades fundamentales de        
                   administracion para ambientes monousuario y multiusuario.  
   /tmp/           Ficheros temporales. El contenido de /tmp NO suelen        
                   conservarse despues de un reinicio del sistema. Los        
                   sistemas de ficheros basados en memoria suelen montarse en 
                   /tmp Puede automatizarse mediante variables de tmpmfs en   
                   rc.conf(5) (o con una entrada en /etc/fstab; ver mdmfs(8), 
                   o para FreeBSD 4.X, mfs(8)).                               
   /usr/           La mayoria de utilidades y aplicaciones de usuario.        
   /usr/bin/       Aplicaciones comunes, herramientas de programacion y otras 
                   aplicaciones.                                              
   /usr/include/   Ficheros <<include>> estandar de C.                        
   /usr/lib/       Bibliotecas.                                               
   /usr/libdata/   Ficheros de datos con diversas funciones.                  
   /usr/libexec/   Daemons del sistema y utilidades del sistema (ejecutados   
                   por otros programas).                                      
   /usr/local/     Ejecutables locales, bibliotecas, etc. tambien se usa como 
                   destino por omision de la infraestructura de ports de      
                   FreeBSD. Dentro de /usr/local debe seguirse el esquema     
                   general definido en hier(7) para /usr. Las excepciones son 
                   el directorio man, que esta directamente bajo /usr/local   
                   en lugar de debajo de /usr/local/share, y la documentacion 
                   de los ports esta en share/doc/port.                       
   /usr/obj/       Arbol destino dependiente de arquitectura fruto de la      
                   compilacion del arbol /usr/src.                            
   /usr/ports      La coleccion de Ports de FreeBSD (opcional).               
   /usr/sbin/      Daemons del sistema y utilidades del sistema (ejecutados   
                   por usuarios del sistema).                                 
   /usr/share/     Ficheros independientes de arquitectura.                   
   /usr/src/       Ficheros fuente BSD y/o local.                             
   /usr/X11R6/     Ejecutables de la distribucion X11R6, bibliotecas, etc     
                   (opcional).                                                
   /var/           Ficheros multiproposito de log, temporales, en transito y  
                   de <<spool>>. En ocasiones se monta en /var un sistema de  
                   ficheros basado en memoria.                                
   /var/log/       Diversos ficheros de log del sistema.                      
   /var/mail/      Ficheros de buzones de correo de usuarios.                 
   /var/spool/     Directorios diversos del sistema de spool de impresora y   
                   correo.                                                    
   /var/tmp/       Ficheros temporales. Suelen conservarse tras el Estos      
                   ficheros suelen conservarse tras el reinicio del sistema,  
                   a menos que /var sea un sistema de ficheros basado en      
                   memoria.                                                   
   /var/yp         Mapas NIS.                                                 

3.5. Organizacion de disco

   La unidad mas pequena que FreeBSD utiliza para ubicar ficheros es el
   nombre de fichero. Los nombres de fichero son sensibles a las mayusculas,
   lo que significa que readme.txt y README.TXT son dos ficheros distintos.
   FreeBSD no utiliza la extension (.txt) de un fichero para determinar si es
   un programa, o un documento o alguna otra forma de datos.

   Los ficheros se almacenan en directorios. Un directorio puede estar vacio,
   o puede contener cientos de ficheros. Un directorio tambien puede contener
   otros directorios, permitiendole contruir una jerarquia de directorios
   dentro de otro. Esto hace mucho mas facil la organizacion de sus datos.

   Para referirse a ficheros o directorios se usa el nombre de archivo o de
   directorio, seguido por una barra, /, seguido por cualquier otro nombre de
   directorio que sea necesario. Si tiene un directorio tal, el cual contiene
   el directorio cual, el cual contiene el fichero readme.txt, entonces el
   nombre completo o ruta al fichero es tal/cual/readme.txt.

   Los directorios y ficheros se almacenan en un sistema de ficheros. Cada
   sistema de ficheros contiene un solo directorio en el nivel mas elevado,
   que es el directorio raiz de ese sistema de ficheros. Este directorio raiz
   puede contener otros directorios.

   Lo visto hasta ahora probablemente sea similar a cualquier otro sistema
   operativo que pueda haber utilizado, pero hay unas cuantas diferencias;
   por ejemplo, MS-DOS(R) utiliza \ para separar nombres de fichero y
   directorio, mientras que Mac OS(R) usa :.

   FreeBSD no utiliza letras de unidades, u otro nombre de unidad en la ruta.
   Por tanto, no podra escribir c:/tal/cual/readme.txt en FreeBSD.

   En FreeBSD, en cambio, un sistema de ficheros recibe el nombre de sistema
   de ficheros raiz. El directorio raiz del sistema de ficheros raiz se
   representa como /. Cualquier otro sistema de ficheros, por tanto, se monta
   bajo el sistema de ficheros raiz. No importa cuantos discos tenga en su
   sistema FreeBSD, cada directorio parecera ser parte del mismo disco.

   Suponga que tiene tres sistemas de ficheros, denominados A, B y C. Cada
   sistema de ficheros tiene un directorio raiz, el cual contiene otros dos
   directorios, llamados A1, A2 (y de la misma manera B1, B2 y C1, C2).

   Usaremos A como sistema de ficheros raiz. Si usara ls para ver el
   contenido de este directorio veria dos subdirectorios, A1 y A2. El arbol
   de directorios seria como este:

   Un sistema de ficheros debe montarse en un directorio de otro sistema de
   ficheros. Ahora suponga que monta el sistema de ficheros B en el
   directorio A1. El directorio raiz de B reemplaza a A1, y los directorios
   en B aparecen de esta manera:

   Cualquier fichero que este en el directorio B1 o B2 puede encontrarse con
   la ruta /A1/B1 o /A1/B2 segun sea necesario. Cualquier fichero que este en
   /A1 ha desaparecido temporalmente. Apareceran de nuevo si B se desmonta de
   A.

   Si B se monta en A2 entonces el diagrama se veria asi:

   y las rutas serian /A2/B1 y /A2/B2 respectivamente.

   Pueden montarse sistemas de ficheros uno sobre otro. Continuando con el
   ejemplo anterior, el sistema de ficheros C podria montarse en el
   directorio B1 en el sistema de ficheros B, lo que nos llevaria a esto:

   O C podria montarse directamente en el sistema de ficheros A, bajo el
   directorio A1:

   Si esta familiarizado con MS-DOS(R) esto es similar, aunque no identico, a
   utilizar join.

   Esto no es algo a lo deba usted dedicar tiempo de forma habitual.
   Normalmente creara sistemas de ficheros al instalar FreeBSD y decidira
   donde montarlos; lo mas habitual es que no los cambie de sitio a menos que
   agregue un disco nuevo.

   Es perfectamente posible tener un sistema de ficheros raiz extenso y no
   necesitar crear otros. Este esquema tiene unos cuantos inconvenientes y
   una ventaja:

   Ventajas de disponer de multiples sistemas de ficheros
     * Si dispone de varios sistemas de ficheros puede optar por usar
       distintas opciones de montaje. Por ejemplo, gracias a una
       planificacion cuidadosa, el sistema de ficheros raiz puede montarse
       como solo-lectura, haciendo imposible borrar sin querer o editar un
       fichero critico. Al mantener separados sistemas de ficheros en los que
       los usuarios pueden escribir, como /home, de otros sistemas de
       ficheros tambien le permite montar con la opcion nosuid; dicha opcion
       previene que los bits suid/guid en los ejecutables almacenados en el
       sistema de ficheros tengan efecto, mejorando en cierto modo la
       seguridad.

     * FreeBSD optimiza automaticamente el esquema de ficheros en un sistema
       de ficheros, dependiendo de como el sistema de ficheros este siendo
       utilizado. Uno que contenga muchos ficheros pequenos tendra una
       optimizacion distinta de uno que contenga menos ficheros y mas
       grandes. Si solo tiene un gran sistema de ficheros no hay manera de
       aplicar esta optimizacion.

     * Los sistemas de ficheros de FreeBSD son muy robustos en caso de sufrir
       un caida electrica. De todas maneras, un fallo electrico en un momento
       critico puede danar la estructura del sistema de ficheros. Si reparte
       sus datos en multiples sistemas de ficheros hara que sea mas probable
       que el sistema arranque despues de uno de esos fallos, haciendole
       ademas mas facil la tarea de restaurarlo desde un respaldo si fuera
       necesario.

   Ventajas de un solo sistema de ficheros
     * Los sistemas de ficheros son de un tamano fijo. Si crea un sistema de
       ficheros cuando instala FreeBSD y le da un tamano especifico, tal vez
       descubra mas tarde que necesita hacer la particion mas grande. Esto no
       es facil de realizar sin hacer una copia de seguridad, crear de nuevo
       el sistema de ficheros con el nuevo tamano y entonces restaurar los
       datos respaldados.

  Importante:

       FreeBSD dispone de growfs(8), que permite incrementar el tamanno de un
       sistema de ficheros <<al vuelo>>, eliminando esta limitacion.

   Los sistemas de ficheros estan alojados en particiones. Este es un detalle
   muy importante, puesto que el termino particion no significa aqui lo mismo
   que en otros entornos (por ejemplo, en MS-DOS(R)) debido a la herencia
   UNIX(R) de FreeBSD. Cada particion se identifica con una letra desde a
   hasta h. Cada particion puede contener solamente un sistema de ficheros,
   lo que significa que los sistemas de ficheros suelen definirse mediante su
   punto de montaje en la jerarquia del sistema de ficheros o por la letra de
   la particion en la que estan alojados.

   FreeBSD tambien utiliza espacio de disco como espacio de intercambio
   (swap). El espacio de intercambio le brinda a FreeBSD memoria virtual.
   Esto permite al su sistema comportarse como si tuviera mas memoria de la
   que realmente tiene. Cuando a FreeBSD se le agota la memoria mueve algunos
   de los datos que no esta utilizando en ese momento al espacio de
   intercambio, y los vuelve a poner donde estaban (desplazando alguna otra
   cosa) cuando los necesita.

   Algunas particiones tienen ciertas convenciones heredadas.

   Particion                          Representacion                          
   a         Normalmente contiene el sistema de ficheros raiz                 
   b         Normalmente contiene el espacio de intercambio (swap)            
   c         Suele tener el mismo tamano de la <<slice>> que la encierra.     
             Esto permite a las utilidades que necesitan trabajar en toda la  
             <<slice>> entera (por ejemplo durante una busqueda de bloques    
             danados) trabajar en la particion c. Normalmente no deberia      
             usted crear un sistema de ficheros en esta particion.            
   d         La particion d solia tuvo un significado especial asociado pero  
             ya no lo tiene.                                                  

   Cada particion que contiene un sistema de ficheros se almacena en lo que
   FreeBSD llama una <<slice>>. <<slice>> es en FreeBSD lo que en otros
   ambitos se denomina particion; es un hecho que deriva de los origenes de
   FreeBSD como ya sabemos basado en UNIX(R).

   Los numeros de <<slice>> muestran el nombre de dispositivo, al que precede
   una s y un numero que puede ser un 1 u otro numero mayor. Por lo tanto
   <<da0s1>> es la primera slice en la primera unidad SCSI. Solo puede haber
   cuatro <<slice>> fisicas en un disco, pero puede haber <<slice>> logicas
   dentro <<slice>> fisicas del tipo apropiado. Estas <<slice>>extendidas se
   numeran a partir de 5, asi que <<ad0s5>> es la primera <<slice>> extendida
   en el primer disco IDE. Estos dispositivos se usan en sistemas de ficheros
   que se preve que ocupen una slice.

   Tanto las <<slice>> y las unidades fisicas <<peligrosamente dedicadas>>,
   como otras unidades contienen particiones, que se designan mediante letras
   desde la a hasta h. Esta letra se anade al nombre del dispositivo. Se vera
   mucho mejor mediante ejemplos: <<da0a>> es la particion a en la primera
   unidad da y es una de esas a las que llamamos <<peligrosamente dedicada>>.
   <<ad1s3e>> es la quinta particion en la tercera slice de la segunda unidad
   de disco IDE.

   Para terminar, cada disco en el sistema tiene tambien su designacion. El
   nombre de disco comienza por un codigo que indica el tipo de disco, luego
   un numero, que indica que disco es. A diferencia de las <<slice>>, la
   numeracion de discos comienza desde 0. Puede las numeraciones mas comunes
   en el Tabla 3.1, "Codigos de dispositivos de disco".

   Cuando se hace referencia a una particion, FreeBSD necesita que tambien se
   nombre la <<slice>> y el disco que contiene la particio. Esto se hace con
   el nombre de disco, s, el numero <<slice>> y por ultimo la letra de la
   particion. Tiene varios casos en el Ejemplo 3.1, "Ejemplo de nombres de
   disco, <<slice>> y particion".

   En el Ejemplo 3.2, "Modelo conceptual de un disco" muestra un modelo
   conceptual del esquema de un disco que deberia ayudarle a aclarar las
   cosas.

   Antes de instalar FreeBSD tendra que configurar las <<slice>> de disco,
   despues crear particiones dentro de las <<slice>> que vaya a usar en
   FreeBSD y luego crear un sistema de ficheros (o swap) en cada particion y
   luego decidir cual va a ser el punto de montaje del sistema de ficheros.

   Tabla 3.1. Codigos de dispositivos de disco

             Codigo                             Significado                   
   ad                         Disco ATAPI (IDE)                               
   da                         Disco de acceso directo SCSI                    
   acd                        CDROM ATAPI (IDE)                               
   cd                         CDROM SCSI                                      
   fd                         Disquete (floppy)                               

   Ejemplo 3.1. Ejemplo de nombres de disco, <<slice>> y particion

   Nombre                             Significado                             
   ad0s1a La primera particion (a) en la primera slice (s1) en el primer      
          disco IDE (ad0).                                                    
   da1s2e La quinta particion (e) en la segunda slice (s2) en el segundo      
          disco SCSI (da1).                                                   

   Ejemplo 3.2. Modelo conceptual de un disco

   Este diagrama muestra como ve FreeBSD el primer disco IDE en el sistema.
   Se asume que el disco es de 4 GB, y contiene dos <<slices>> de 2 GB
   (particiones MS-DOS(R)). La primera particion contiene un disco MS-DOS(R),
   C:, y la segunda particion contiene una instalacion de FreeBSD. Esta
   instalacion de ejemplo tiene tres particiones, y una particion swap.

   Cada una de las tres particiones tiene un sistema de ficheros. La
   particion a se utilizara para el sistema de ficheros raiz, e para la
   jerarquia del directorio /var, y f para la jerarquia del directorio /usr.

3.6. Montaje y desmontaje de sistemas de ficheros

   El sistema de ficheros se visualiza mejor como un arbol enraizado, tal y
   como esa, en /. /dev, /usr y todos los demas directorios en el directorio
   raiz son raamas, las cuales pueden tener sus propias ramas, como
   /usr/local y asi sucesivamente.

   Existen varias razones para albergar algunos de estos directorios en
   sistemas de ficheros separados. /var contiene los directorios log/, spool/
   y varios tipos de ficheros temporales y pueden llegar a desbordarse.
   Agotar el espacio del sistema de ficheros raiz no es nada bueno desde
   cualquier punto de vista, asi que separar /var de de / es algo que deberia
   hacerse siempre que sea posible.

   Otra razon para meter ciertos arboles de directorios en otros sistemas de
   ficheros es si van a estar albergados en discos fisicos separados, o si
   son discos virtuales separados, como un montaje por NFS en el caso de
   unidades de CDROM.

  3.6.1. El fichero fstab

   Durante el proceso de arranque los sistemas de ficheros listados en
   /etc/fstab se montan automaticamente (a menos que esten listados con la
   opcion noauto).

   /etc/fstab contiene una lista de lineas con el siguiente formato:

 dispositivo       /punto-de-montaje punto de montaje     opciones      dumpfreq     passno

   dispositivo

           Un nombre de dispositivo (debe existir).

   punto-de-montaje

           Un directorio (que debe existir) en el que montar el sistema de
           ficheros.

   tipo de sistema ficheros

           El tipo de sistema de ficheros es un parametro que interpretara
           mount(8). El sistema de ficheros por omision de FreeBSD es ufs.

   opciones

           Ya sea rw para sistemas de ficheros de lectura-escritura, o ro
           para sistemas de ficheros de solo lectura, seguido de cualquier
           otra opcion que sea necesaria. Una opcion muy habitual es noauto,
           que se suele usar en sistemas de ficheros que no se deben montar
           durante la secuencia de arranque. Tiene otras opciones en la
           pagina de manual de mount(8).

   dumpfreq

           dump(8) la usa para determinar que sistema de ficheros requieren
           volcado. Si el campo no esta declarado se asume un valor de cero.

   passno

           Determina el orden en el cual los sistemas de ficheros deben
           revisarse. Los sistemas de ficheros que hayan de saltarse deben
           tener su passno a cero. El sistema de ficheros raiz (que
           obviamente debe ser revisado antes que cualquier otro) debe tener
           su passno puesto a uno, y los demas sistemas de ficheros deben
           tener valores mayores que uno. Si mas de un sistema de ficheros
           tiene el mismo passno fsck(8) tratara de revisarlos en paralelo en
           caso de ser posible.

   Consulte la pagina de manual de fstab(5) para mayor informacion sobre el
   formato del fichero /etc/fstab y las opciones que contiene.

  3.6.2. La orden mount

   mount(8) es al fin y al cabo quien monta los sistemas de ficheros.

   En su forma mas basica se usa lo siguiente:

 # mount dispositivo punto-de-montaje

   Existe una gran cantidad de opciones (las encontrara todas en mount(8))
   pero las mas comunes son:

   Opciones de montaje

   -a

           Montar todos los sistemas de ficheros que aparezcan en /etc/fstab,
           excepto aquellos marcados como <<noauto>>, excluidos por el
           parametro -t o aquellos que ya esten montados.

   -d

           Realizar todo excepto la llamada real de montaje del sistema. Esta
           opcion es muy util en caso de problemas si se combina con la
           opcion -v para determinar que es lo que mount(8) esta haciendo
           realmente.

   -f

           Forzar el montaje de un sistema de ficheros inestable (por ejemplo
           uno que da errores tras un reinicio subito, algo que es bastante
           peligroso), o forzar la revocacion de accesos de escritura cuando
           se cambia el estado de un sistema de ficheros de lectura-escritura
           a solo lectura.

   -r

           Montar el sistema de ficheros como solo lectura. Esto es identico
           a utilizar el argumento ro (rdonly para versiones anteriores a
           FreeBSD 5.2) en la opcion -o.

   -t tipo de sistema de ficheros

           Montar un sistema de ficheros dado con el tipo de sistema de
           ficheros, o montar solamente sistemas de ficheros del tipo dado si
           se proporciona la opcion -a.

           <<ufs>> es el sistema de ficheros por omision.

   -u

           Actualizar puntos de montaje en el sistema de ficheros.

   -v

           Mostrar mayor informacion.

   -w

           Montar el sistema de ficheros como lectura-escritura.

   La opcion -o toma una lista las siguientes opciones separada por comas:

   nodev

           No interpretar dispositivos especiales en el sistema ficheros. Es
           una opcion de seguridad que puede ser muy util.

   noexec

           No permitir la ejecucion de binarios en este sistema de ficheros.
           Esta tambien es una opcion de seguridad util.

   nosuid

           No interpretar bits setuid o setgid en el sistema de ficheros.
           Esta tambien es una opcion de seguridad util.

  3.6.3. La orden umount

   umount(8) toma como parametro un punto de montaje, un nombre de
   dispositivo, o la opcion -a o -A.

   Todas las formas toman -f para forzar el desmontaje y -v para mostrar mas
   informacion. Tenga muy en cuenta que usar -f no suele ser una forma
   recomendable de proceder. Desmontar a la fuerza los sistemas de ficheros
   puede acarrear el congelar la maquina o danar los datos en el sistema de
   ficheros.

   -a y -A se usan para desmontar todos los sistemas de ficheros montados,
   con la ventaja de poder elegir el tipo de sistema de ficheros que se use
   tras -t. De todas maneras -A no trata de desmontar el sistema de ficheros
   raiz.

3.7. Procesos

   FreeBSD es un sistema operativo multitarea. Esto significa que parece como
   si mas de un programa se estuviera ejecutando al mismo tiempo. Cada
   programa uno de esos programas que se esta ejecutando en un momento dado
   se denomina proceso. Cada orden que ejecuta iniciara al menos un proceso
   nuevo, y hay muchos procesos que se estan que se estan ejecutando en todo
   momento, manteniendo el sistema en funcionamiento.

   Cada proceso tiene un identificador individual consistente en un numero
   llamado ID del proceso, o PID, y al igual que sucede con los ficheros,
   cada proceso tiene un propietario y un grupo. La informacion de
   propietario y grupo se usa para determinar que ficheros y dispositivos
   puede abrir el proceso mediante los permisos de fichero explicados
   anteriormente. La mayoria de los procesos tambien tiene un proceso padre.
   El proceso padre es el proceso que los inicio. Por ejemplo, si esta
   tecleando ordenes en la shell, la shell es un proceso, y cualquier orden
   que usted ejecute tambien lo sera. De este modo cada proceso que ejecute
   tendra como proceso padre a su shell. La excepcion es un proceso especial
   llamado init(8). init es siempre el primer proceso, asi que su PID siempre
   es 1. El kernel arranca automaticamente init en el arranque de FreeBSD.

   Hay dos ordenes particularmente utiles para ver los procesos en el
   sistema, ps(1) y top(1). ps se usa para mostrar una lista estatica de los
   procesos que se ejecutan en el sistema en es momento, y puede mostrar sus
   PID, cuanta memoria esta usando, la linea de ordenes con la que fueron
   iniciados y muchas mas cosas. top despliega todos los procesos que se
   estan ejecutando y actualiza la pantalla cada pocos segundos para que
   pueda ver lo que esta haciendo su sistema.

   Por omision ps solo le muestra las ordenes que estan ejecutando y que sean
   propiedad de su usuario. Por ejemplo:

 % ps
   PID  TT  STAT      TIME COMMAND
   298  p0  Ss     0:01.10 tcsh
  7078  p0  S      2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
 37393  p0  I      0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
 48630  p0  S      2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
 48730  p0  IW     0:00.00 (dns helper) (navigator-linux-)
 72210  p0  R+     0:00.00 ps
   390  p1  Is     0:01.14 tcsh
  7059  p2  Is+    1:36.18 /usr/local/bin/mutt -y
  6688  p3  IWs    0:00.00 tcsh
 10735  p4  IWs    0:00.00 tcsh
 20256  p5  IWs    0:00.00 tcsh
   262  v0  IWs    0:00.00 -tcsh (tcsh)
   270  v0  IW+    0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
   280  v0  IW+    0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
   284  v0  IW     0:00.00 /bin/sh /home/nik/.xinitrc
   285  v0  S      0:38.45 /usr/X11R6/bin/sawfish

   Como puede ver en este ejemplo la salida de ps(1) esta organizada en
   columnas. PID es el ID de proceso anteriormente expuesto. Los PIDs se
   asignan a partir del 1 y hasta 99999, y vuelven a comenzar desde el 1 otra
   cuando se terminan los numeros. La columna TT muestra la tty en la que el
   programa se esta ejecutando; podemos ignorarla tranquilamente por el
   momento. STAT muestra el estado del programa; de momento tambien podemos
   ignorarlo. TIME es la cantidad de tiempo que el programa ha se ha estado
   ejecutando en la CPU (generalmente no es el tiempo transcurrido desde que
   se inicio el programa, ya que la mayoria de los programas pasan mucho
   tiempo esperando antes de que necesiten gastar tiempo en la CPU.
   Finalmente, COMMAND es la linea de ordenes que se empleo para ejecutar el
   programa.

   ps(1) admite muchas opciones sobre la informacion que se desea ver. Uno de
   los conjuntos mas utiles es auxww. a muestra informacion acerca de todos
   los procesos ejecutandose, no solamente los suyos. u despliega el nombre
   de usuario del propietario del proceso, asi como el uso de memoria. x
   despliega informacion acerca de los procesos daemon y ww hace que ps(1)
   despliegue la linea de ordenes completa, en lugar de truncarla cuando es
   demasiado larga para caber en la pantalla.

   La salida de top(1) es similar. Veamos un ejemplo:

 % top
 last pid: 72257;  load averages:  0.13,  0.09,  0.03    up 0+13:38:33  22:39:10
 47 processes:  1 running, 46 sleeping
 CPU states: 12.6% user,  0.0% nice,  7.8% system,  0.0% interrupt, 79.7% idle
 Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
 Swap: 256M Total, 38M Used, 217M Free, 15% Inuse

   PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
 72257 nik       28   0  1960K  1044K RUN      0:00 14.86%  1.42% top
  7078 nik        2   0 15280K 10960K select   2:54  0.88%  0.88% xemacs-21.1.14
   281 nik        2   0 18636K  7112K select   5:36  0.73%  0.73% XF86_SVGA
   296 nik        2   0  3240K  1644K select   0:12  0.05%  0.05% xterm
 48630 nik        2   0 29816K  9148K select   3:18  0.00%  0.00% navigator-linu
   175 root       2   0   924K   252K select   1:41  0.00%  0.00% syslogd
  7059 nik        2   0  7260K  4644K poll     1:38  0.00%  0.00% mutt
 ...

   La salida esta dividida en dos secciones. La cabecera (las primeras cinco
   lineas) muestra el PID del ultimo proceso en ejecutarse, la carga promedio
   del sistema (una medida de la carga del sistema), el <<uptime>> del
   sistema (tiempo desde el ultimo reinicio) y la hora actual. Las otras
   cifras en la cabecera se relacionan con cuantos procesos hay en ejecucion
   en el sistema (47 en este caso), cuanta memoria y espacio de intercambio
   (swap) esta en uso, y cuanto tiempo esta el sistema en diferentes estados
   de CPU.

   Mas abajo hay una serie de columnas con informacion similar a la salida de
   ps(1). Igual que antes, puede usted ver el PID, el nombre de usuario, la
   cantidad de tiempo de CPU en uso y la orden que se ejecuto. top(1) tambien
   mostrara por omision la cantidad de espacio de memoria que emplea cada
   proceso. Esta dividido en dos columnas, una para el tamano total y otra
   para el tamano residente (el tamano total es cuanta memoria ha necesitado
   la aplicacion y el tamano residente es cuanta se esta usando en ese
   momento concreto). En este ejemplo puede verse que Netscape(R) requerido
   casi 30 MB de RAM, pero actualmente solo esta usando 9 MB.

   top(1) actualiza automaticamente el listado cada dos segundos, pero este
   lapso puede cambiarse mediante la opcion s.

3.8. Daemons, senales y como matar procesos

   cuando ejecuta un editor es facil controlarlo, decirle que cargue ficheros
   y demas. Puede hacerse porque el editor permite ese control y porque el
   editor depende de una terminal. Algunos programas no estan disenados para
   ejecutarse entradas continuas por parte del usuario, asi que se
   desconectan de la terminal a la primera oportunidad. Por ejemplo, un
   servidor web pasa todo el dia respondiendo peticiones web y normalmente no
   necesita que usted le haga caso. Los programas que transportan correo
   electronico de un sitio a otro son otro ejemplo de esta clase de
   aplicacion.

   Llamamos a estos programas daemons. Los Daemons eran personajes de la
   mitologia griega; no eran ni buenos ni malos, eran pequenos espiritus
   sirvientes que, en gran medida, hacian cosas utiles por la humanidad. Algo
   muy parecido a como los servidores web y los servidores de correo hacen
   hoy dia tantas cosas utiles para nosotros. Por eso, desde hace mucho
   tiempo la mascota de BSD es ese daemon de aspecto tan ufano con su
   tridente y su comodo calzado deportivo.

   Hay una norma segun la cual se da nombre a los programas que suelen
   ejecutarse como daemons con una <<d>> final. BIND es el daemon de nombres
   de Berkeley (y el programa que en realidad se ejecuta se llama named); el
   servidor web Apache se llama httpd, el daemon de <<spool>> de impresora de
   linea es lpd y asi sucesivamente. Se trata de un acuerdo, no una ley
   ferrea; por ejemplo el daemon principal de correo de Sendmail se llama
   sendmail, y no maild, como podria suponerse visto lo precedente.

   Algunas veces necesitara comunicarse con un daemon. Estas comunicaciones
   se denominan senales; es posible comunicarse con un daemon (o con
   cualquier otro proceso ejecutandose) mandandole una senal. Existen
   diversos tipos de senales diferentes que puede mandar: algunas tienen un
   significado especial, otras son interpretadas por la aplicacion y la
   documentacion de la aplicacion le dira como interpreta la senal esa
   aplicacion). Solamente puede enviar una senal a un del que sea usted
   propietario. Si manda una senal a un proceso de otro usuario con kill(1) o
   kill(2) vera un mensaje del sistema en el que se le comunica que no tiene
   permiso para hacer tal cosa. La excepcion a esto es el usuario root, que
   puede mandar senales a los procesos de cualquier usuario del sistema.

   FreeBSD tambien enviara senales de aplicacion en determinados casos. Si
   una aplicacion esta mal escrita y trata de acceder a memoria a la que no
   esta previsto que acceda FreeBSD manda al proceso la senal Violacion de
   segmento (SIGSEGV). Si una aplicacion ha utilizado la llamada de sistema
   alarm(3) para ser avisada despues de que un periodo de tiempo haya
   transcurrido se le mandara la senal de alarma (SIGALRM), y asi
   sucesivamente.

   Hay dos senales que pueden usarse para detener un proceso, SIGTERM y
   SIGKILL. SIGTERM es la manera amable de matar un proceso; el proceso puede
   recibir la senal, darse cuenta que usted quiere que se apague, cerrar
   cualquier fichero de log que pueda tener abierto y generalmente terminar
   cualquier tarea que este realizando en ese momento antes de apagarse. En
   algunos casos un proceso puede incluso ignorar SIGTERM si se encuentra
   inmerso en una tarea que no puede ser interrumpida.

   Por el contrario, un proceso no puede ignorar una senal SIGKILL. Esta es
   la senal <<No me importa lo que estas haciendo, detente ahora mismo>>. Si
   manda un SIGKILL a un proceso FreeBSD detendra ese proceso
   inmediatamente.[4].

   Otras senales que puede usar: SIGHUP, SIGUSR1 y SIGUSR2. Son senales de
   proposito general, y aplicaciones diferentes pueden hacer cosas diferentes
   cuando se utilicen.

   Suponga que ha cambiado el fichero de configuracion de su servidor web; es
   un buen momento para decirle al servidor web que lea y aplique la
   configuracion. Podria detener y reiniciar httpd, pero esto implicaria un
   periodo breve de suspension del servicio de su servidor web, lo cual puede
   no ser asumible. La mayoria de los daemons fueron creados pensando en que
   fueran capaces de responder a la senal SIGHUP releyendo su fichero de
   configuracion. En lugar de matar y reiniciar httpd le podria mandar la
   senal SIGHUP. Dado que no hay una manera estandar para responder a estas
   senales, diferentes daemons tendran diferente comportamiento, asi que
   asegurese de leer la documentacion del daemon en cuestion.

   Las senales se envian mediante kill(1), como puede verse en el siguiente
   ejemplo.

   Procedimiento 3.1. Envio de una senal a un proceso

   Este ejemplo muestra como enviar una senal a inetd(8). El fichero de
   configuracion de inetd es /etc/inetd.conf e inetd releera dicho fichero de
   configuracion cuando se le envie un SIGHUP.

    1. Identifique el ID de proceso del proceso al que quiere enviarle la
       senal mediante ps(1) y grep(1). grep(1) se usa para buscar cadenas de
       texto de su eleccion en la salida estandar. Puede ejecutarse como un
       usuario normal, mientras que inetd(8) se ejecuta como root, asi que
       debe pasarle los parametros ax a ps(1).

 % ps -ax | grep inetd
   198  ??  IWs    0:00.00 inetd -wW

       Vemos que el PID de inetd(8) es 198. En algunos casos grep inetd
       tambien puede aparecer en esta salida. Esto se debe a la manera en que
       ps(1) tiene que encontrar la lista de procesos ejecutandose.

    2. Utilice kill(1) para enviar la senal. Debido a que inetd(8) esta
       siendo ejecutado po root tendra que usar primero su(1) para volverse
       root.

 % su
 Password:
 # /bin/kill -s HUP 198

       Del mismo modo que la mayoria de ordenes UNIX(R) kill(1) no imprimira
       ninguna salida si ha funcionado bien. Si envia una senal a un proceso
       del que no es el propietario vera lo siguiente: kill: PID: Operation
       not permitted. Si no teclea bien el PID puede enviar la senal a un
       proceso equivocado, lo cual puede ser malo, o si tiene suerte, habra
       enviado la senal a un proceso que no esta en uso y vera el sistema le
       dir' kill: PID: No such process.

  ?Por que utilizar /bin/kill?:

       Muchas shells incorporan su propio kill; esto es, el shell mandara la
       senal directamente, en lugar de ejecutar /bin/kill. Esto puede ser
       util pero las diferentes shells tienen diferentes sintaxis para
       especificar el nombre de la senal que envian. En lugar de tratar de
       aprederse todas ellas, es mas facil simplemente usar /bin/kill ... sea
       la que sea la shell que prefiera usar.

   El envio de otras senales es muy similar; sustituya TERM o KILL en la
   linea de ordenes segun sea necesario.

  Importante:

   Matar procesos aleatorios en el sistema es una mala idea. En particular,
   init(8), ID de proceso 1, es muy especial. Ejecutar /bin/kill -s KILL 1 es
   una manera rapida de apagar su sistema. Siempre revise dos veces los
   argumentos con los que ejecuta kill(1) antes de pulsar Intro.

3.9. Shells

   En FreeBSD gran parte del trabajo diario se hace en una interfaz de linea
   de ordenes llamada shell. El trabajo principal de la shell es ir
   recibiendo ordenes mediante un canal de entrada y ejecutarlos. Muchas
   shells tambien tienen funciones integradas para ayudar ayudar con las
   tareas diarias como manipulacion de ficheros, gestion de archivos con
   expresiones regulares, edicion en la propia linea de ordenes, macros de
   ordenes y variables de entorno. FreeBSD incluye diversas shells, como sh,
   el shell Bourne y tcsh, el shell C mejorado. Hay muchas otras shells
   disponibles en la coleccion de ports de FreeBSD, como zsh y bash.

   ?Que shell usar? es una cuestion de gustos. Si va a programar en C puede
   preferir usar una shell tipo C, como tcsh. Si viene del mundo Linux o si
   es nuevo en la interfaz de linea de ordenes de UNIX(R) puede probar con
   bash. Tenga en cuenta que cada shell posee unas propiedades unicas que
   pueden o no funcionar con su entorno de trabajo preferido y que puede
   usted elegir que shell usar.

   Una de las propiedades comunes de las shell es que completan los nombres
   de fichero. Una vez que ha introducido las primeras letras de una orden o
   del nombre de un fichero, se puede hacer que la shell complete
   automaticamente el resto de la orden o nombre de fichero pulsando la tecla
   Tab. Veamos un ejemplo. Suponga que tiene dos ficheros llamados talcual y
   tal.cual. Usted quiere borrar tal.cual. Lo que habria que teclear es: rm
   ta[tabulador].[tabulador].

   La shell mostraria en pantalla rm ta[BIP].cual.

   El [BIP] es la campana de la consola, es decir, la shell esta diciendome
   que no pudo completar totalmente el nombre de fichero porque hay mas de
   una coincidencia. Tanto talcual como tal.cual comienzan por ta, pero solo
   se pudo completar hasta tal. Si se teclea ., y de nuevo tabulador la shell
   es capaz de anadir el resto del nombre de fichero.

   Otra funcion de la shell son las variables de entorno. Las variables de
   entorno son parejas de valores clave almacenados en el espacio de entorno
   del shell. Este espacio puede ser leido por cualquier programa invocado
   por la shell y por lo tanto contiene mucha configuracion de programas.
   Esta es una lista de las variables de entorno mas comunes y su
   significado:

   Variable                            Descripcion                            
   USER     Nombre de usuario en el sistema.                                  
   PATH     Lista de directorios, separados por punto y coma, en los que se   
            buscan ejecutables.                                               
   DISPLAY  Nombre de red de la pantalla X11 a la que conectarse, si esta     
            disponible.                                                       
   SHELL    La shell actual.                                                  
   TERM     El nombre de la terminal del usuario. Se usa para determinar las  
            caracteristicas de la terminal.                                   
   TERMCAP  Base de datos donde encontrar los codigos de escape necesarios    
            para realizar diferentes funciones en la terminal.                
   OSTYPE   Tipo de sistema operativo. Por ejemplo, FreeBSD.                  
   MACHTYPE Arquitectura de CPU en la que se esta ejecutando el sistema.      
   EDITOR   El editor de texto preferido por el usuario.                      
   PAGER    El paginador de texto preferido por el usuario.                   
   MANPATH  Lista de directorios separados por punto y coma en los que se     
            buscan paginas de manual.                                         

   Establecer una variable de entorno difiere ligeramente de shell a shell.
   Por ejemplo, en las shells al estilo C como tcsh y csh, se usa setenv para
   establecer las variables de entorno. Bajo shells Bourne como sh y bash, se
   usa export para establecer las variables de entorno actuales. Por ejemplo,
   para establecer o modificar la variable de entorno EDITOR (bajo csh o
   tcsh) la siguiente orden establece EDITOR como /usr/local/bin/emacs:

 % setenv EDITOR /usr/local/bin/emacs

   Bajo shells Bourne:

 % export EDITOR="/usr/local/bin/emacs"

   Tambien se puede hacer que la mayoria de las shells muestren el contenido
   de una variable de entorno situando el caracter $ delante del nombre de la
   variable en la linea de ordenes. Por ejemplo, echo $TERM mostrara
   cualquiera que sea el valor que haya establecido para $TERM, porque la
   shell expande el valor de $TERM y se lo pasa al programa echo.

   Las shells manejan muchos caracteres especiales, llamados metacaracteres,
   como representaciones especiales de datos. El mas comun es el caracter *,
   que representa cualquier numero de caracteres en un nombre de fichero.
   Estos metacaracteres especiales se pueden usar para la expansion de
   nombres de fichero. Por ejemplo, teclear echo * es casi lo mismo que
   introducir ls porque la shell toma todos los ficheros que coinciden con *
   y se los pone en la linea de ordenes para que echo los vea.

   Para evitar que la shell interprete estos caracteres especiales pueden
   escamotearse anteponiendoles una contrabarra (\). echo $TERM imprime el
   nombre de terminal que este usando. echo \$TERM imprime $TERM,
   literalmente.

  3.9.1. Como cambiar su shell

   La manera mas facil de cambiar de shell es mediante chsh. chsh le colocara
   dentro del editor que este configurado en la variable de entorno EDITOR;
   si no la ha modificado, el sistema ejecutara vi, el editor por omision.
   Cambie la linea <<Shell:>> segun sus gustos.

   Tambien se le puede suministrar a chsh la opcion -s; esto establecera la
   shell sin necesidad de entrar en el editor de texto. Si por ejemplo quiere
   que bash sea su shell por omision puede configurarlo del siguiente modo:

 % chsh -s /usr/local/bin/bash

   Ejecutar chsh sin parametros y editar la shell desde ahi tambien funciona.

  Nota:

   La shell que se desee usar debe estar incluida en /etc/shells. Si se ha
   instalado una shell desde la coleccion de ports esto deberi estar hecho
   automaticamente. Si ha instalado la shell manualmente, tendra usted que
   realizar el cambio oportuno en /etc/shells.

   Por ejemplo, si instalo manualmente bash y lo ubico en /usr/local/bin
   deberia hacer lo siguiente:

 # echo "/usr/local/bin/bash" >> /etc/shells

   Hecho esto vuelva a ejecutar chsh.

3.10. Editores de texto

   Gran parte de la configuracion de FreeBSD se realiza modificando ficheros
   de texto, asi que le conviene familiarizarse con alguno de ellos. FreeBSD
   viene con unos cuantos como parte del sistema base y encontrara muchos mas
   en la coleccion de ports.

   El editor de textos mas sencillo y facil de aprender es uno llamado ee,
   cuyo nombre proviene del ingles <<easy editor>> (editor facil). Para
   iniciar ee se debe teclear en la linea de ordenes ee nombre-de-fichero,
   donde nombre-de-fichero es el nombre del fichero que se quiere editar. Por
   ejemplo, para editar /etc/rc.conf teclee ee /etc/rc.conf. Una vez dentro
   de ee todas las ordenes para manipular las funciones del editor estan
   listadas en la parte superior de la pantalla. El caracter ^ representa la
   tecla Ctrl del teclado, por lo tanto ^e significa la combinacion de teclas
   Ctrl+e. Para salir de ee pulse la tecla Esc y elija abandonar (<<leave>>)
   el editor. El editor preguntara entonces si quiere conservar los cambios
   si el fichero hubiera sido modificado.

   FreeBSD viene tambien con editores de texto mucho mas potentes, como vi,
   como parte del sistema base, mientras que otros editores, como Emacs y vim
   son parte de la coleccion de ports de FreeBSD (editors/emacs y
   editors/vim). Estos editores son muchisimo mas poderosos, pero tienen la
   desventaja de ser un poco mas complicados de aprender a manejar. De
   cualquier manera si planea hacer mucho trabajo de edicion de texto,
   aprender a usar un editor de texto mas poderoso como vim o Emacs le
   ahorrara muchisimo mas tiempo a la larga.

3.11. Dispositivos y nodos de dispositivos

   Dispositivo es un termino utilizado la mayoria de las veces para
   actividades relacionadas con hardware del sistema, como discos,
   impresoras, tarjetas graficas y teclados. Cuando FreeBSD arranca, la
   mayoria de lo que FreeBSD despliega son dispositivos en el momento de ser
   detectados. Si lo desea, puede volver a ver todos los mensajes que el
   sistema emite durante el arranque consultando /var/run/dmesg.boot.

   Por ejemplo, acd0 es la primera unidad CDROM IDE, mientras que kbd0
   representa el teclado.

   En un sistema operativo UNIX(R) debe accederse a la mayoria de estos
   dispositivos a traves de ficheros especiales llamados nodos de
   dispositivo, que se encuentran en el directorio /dev.

  3.11.1. Creacion de nodos de dispositivo

   Cuando agregue un nuevo dispositivo a su sistema, o compile soporte para
   dispositivos adicionales, puede que necesite crear uno o mas nodos de
   dispositivo.

    3.11.1.1. DEVFS Dispositivo de sistema de ficheros (DEVice File System)

   El dispositivo de sistema de ficheros, o DEVFS, ofrece acceso a
   dispositivos del espacio de nombres del kernel en el espacio de nombres
   del sistema de ficheros global. En lugar de tener que crear y modificar
   nodos de dispositivo, DEVFS se encarga del mantenimiento dinamico de este
   sistema de fichero.

   Consulte devfs(5) si quiere mas informacion.

3.12. Formatos binarios

   Para poder entender por que FreeBSD utiliza el formato elf(5) primero debe
   saber ciertas cosas sobre los tres formatos de ejecutables <<dominantes>>
   en UNIX(R):

     * a.out(5)

       El formato objeto de UNIX(R) mas antiguo y <<clasico>>. Utiliza una
       cabecera corta y compacta con un numero magico al inicio que se usa
       frecuentemente para identificar el formato (vea a.out(5) para mas
       informacion). Contiene tres segmentos cargados: .text, .data, y .bss
       ademas de una tabla de simbolos y una tabla de cadena (<<strings>>).

     * COFF

       El formato objeto de SVR3. La cabecera consiste en una tabla de
       seccion, para que pueda tener mas contenido ademas de las secciones
       .text, .data, y .bss.

     * elf(5)

       Es el sucesor de COFF; dispone de secciones multiples y valores
       posibles de 32-bits o 64-bits. Una gran desventaja: ELF fue tambien
       disenado asumiendo que solamente existiria una ABI por cada
       arquitectura de sistema. Esa suposicion es en realidad bastante
       incorrecta y ni siquiera en el mundo comercial SYSV (el cual tiene al
       menos tres ABIs: SVR4, Solaris y SCO) se puede dar por buena.

       FreeBSD trata de solucionar este problema de alguna manera ofreciendo
       una herramienta para marcar un ejecutable ELF conocido con informacion
       acerca de la ABI con la que funciona. Si quiere mas informacion
       consulte la pagina de manual de brandelf(1).

   FreeBSD viene del campo <<clasico>> y ha utilizado el formato a.out(5),
   una tecnologia usada y probada en muchas de muchas generaciones de
   versiones de BSD hasta el inicio de la rama 3.X. Aunque era posible
   compilar y ejecutar binarios nativos ELF (y kernels) en un sistema FreeBSD
   desde algun tiempo antes de esto, FreeBSD al principio se mantuvo <<contra
   corriente>> y no cambio a ELF como formato por defecto. ?Por que? Bueno,
   cuando el mundo Linux efectuo su dolorosa transicion a ELF no fue tanto
   por huir del formato a.out como por su inflexible mecanismo de bibliotecas
   compartidas basado en tablas de saltos, que hacia igual de dificil la
   construccion de bibliotecas compartidas tanto para los desarrolladores
   como para los proveedores. Ya que las herramientas ELF disponibles
   ofrecian una solucion al problema de las bibliotecas compartidas y eran
   vistas por mucha gente como <<la manera de avanzar>>, el costo de
   migracion fue aceptado como necesario y se realizo la transicion. El
   mecanismo de bibliotecas compartidas de FreeBSD esta disenado de manera
   mas cercana al estilo del sistema de bibliotecas compartidas de SunOS(TM)
   de Sun y, como tal, es muy sencillo de utilizar.

   Entonces, ?por que existen tantos formatos diferentes?

   En un tiempo muy, muy lejano, existia hardware simple. Este hardware tan
   simple soportaba un sistema pequeno, simple. a.out era idoneo para el
   trabajo de representar binarios en este sistema tan simple (un PDP-11). A
   medida que la gente portaba UNIX(R) desde este sistema simple, retuvieron
   el formato a.out debido a que era suficiente para los primeros portes de
   UNIX(R) a arquitecturas como 68k de Motorola, VAXen, etc.

   Entonces algun brillante ingeniero de hardware decidio que si podia forzar
   al software a hacer algunos trucos sucios podria sortear ciertos
   obstaculos del diseno y permitir al nucleo de su CPU correr mas
   rapidamente. Aunque estaba hecho para trabajar con este nuevo tipo de
   hardware (conocido entonces como RISC), a.out no estaba bien adaptado para
   este hardware, asi que varios formatos fueron desarrollados para obtener
   un rendimiento mayor de este hardware que el podia extraerse del limitado
   y simple formato a.out. Asi fue como COFF, ECOFF y algunos otros formatos
   mas extranos fueron inventados y sus limitaciones exploradas hasta que se
   fue llegando a la eleccion de ELF.

   Ademas, el tamano de los programas estaba volviendose gigante y los discos
   (y la memoria fisica) eran relativamente pequenos, asi que el concepto de
   una biblioteca compartida nacio. El sistema VM tambien se volvio mas
   sofisticado. A pesar de que todos estos avances se hicieron utilizando el
   formato a.out, su utilidad se iba reduciendo paulatinamente con cada nueva
   opcion. Ademas, la gente queria cargar cosas dinamicamente en el momento
   de ejecucion, o descartar partes de su programa despues de que el codigo
   de inicio se ejecutara para ahorrar memoria principal y espacio de swap.
   Al volverse mas sofisticados los lenguajes, la gente empezo a ver la
   necesidad de introducir codigo antes del inicio del programa de forma
   automatica. Se hicieron muchos hacks al formato a.out para permitir que
   todas estas cosas sucedieran y lo cierto es que por un tiempo funcionaron.
   Pero a.out no estaba para solucionar todos estos problemas sin incrementar
   la carga y complejidad del codigo. Aunque ELF resolvia muchos de estos
   problemas, en ese momento hubiera sido terrible dejar de lado un sistema
   que funcionaba, asi que ELF tuvo que esperar hasta que fue mas doloroso
   permanecer con a.out que migrar a ELF.

   De todas maneras, con el paso del tiempo las herramientas de compilacion
   de las que FreeBSD derivo las suyas (en especial el ensamblador y el
   cargador) evolucionaron en dos arboles paralelos. El arbol FreeBSD FreeBSD
   anadio bibliotecas compartidas y corrigio algunos errores. La gente de GNU
   (que fueron quienes escribieron estos programas) los reescribio y
   anadieron una forma mas simple de disponer de compiladores cruzados
   (<<cross compilers>>), el uso de diferentes formatos, etc. Aunque mucha
   gente queria compiladores cruzados con FreeBSD como <<blanco>> no hubo
   suerte, porque los fuentes que que FreeBSD tenia para as y ld no estaban
   listos para cumplir esa tarea. La nueva cadena de herramientas GNU
   (binutils) soporta compilacion cruzada, ELF, bibliotecas compartidas,
   extensiones C++, etc. Ademas, muchos proveedores estan liberando binarios
   ELF y es algo muy bueno que FreeBSD los pueda ejecutar.

   ELF es mas expresivo que a.out y permite un sistema base mas extensible.
   Las herramientas ELF estan mejor mantenidas y ofrecen soporte de
   compilacion cruzada, muy importante para mucha gente. ELF puede ser un
   poco mas lento que a.out, pero tratar de medirlo puede ser dificil.
   Tambien existen numerosos detalles que son diferentes entre los dos en
   como gestionan paginas, como gestionan codigo de inicio, etc. Ninguna es
   muy importante, pero las diferencias existen. Con el tiempo, el soporte
   para a.out sera eliminado del kernel GENERIC y es muy posible que se
   elimine del kernel la posibilidad de ejecutar tales binarios una vez que
   la necesidad de usar programas a.out haya pasado.

3.13. Mas informacion

  3.13.1. Paginas de manual

   La documentacion mas exhaustiva de FreeBSD esta en las paginas de manual.
   Casi todos los programas del sistema vienen con un breve manual de
   referencia explicando el funcionamiento basico y sus diferentes
   argumentos. Estos manuales pueden revisarse mediante man. El uso de man es
   simple:

 % man orden

   orden es el nombre de la orden sobre la que que desea saber mas. Por
   ejemplo, para mas informacion sobre ls escriba:

 % man ls

   El manual en linea esta dividido en secciones numeradas:

    1. Comandos de usuario.

    2. Llamadas al sistema y numeros de error.

    3. Funciones en las bibliotecas de C.

    4. Controladores de dispositivo.

    5. Formatos de fichero.

    6. Juegos y demas pasatiempos.

    7. Informacion sobre temas diversos.

    8. Comandos relacionados con el mantenimiento del sistema y su
       funcionamiento.

    9. Desarrolladores del Kernel.

   En algunos casos, el mismo tema puede aparecer en mas de una seccion del
   manual en linea. Por ejemplo, existe una orden de usuario chmod y una
   llamada del sistema chmod(). En este caso se le puede decir a man cual
   desea consultar especificando la seccion:

 % man 1 chmod

   Esto desplegara la pagina de manual de la orden de usuario chmod. Las
   referencias a una seccion concreta del manual en linea tradicionalmente
   suelen colocarse entre parentesis en la documentacion escrita, por lo
   tanto chmod(1) se refiere a la orden de usuario chmod y chmod(2) se
   refiere a la llamada de sistema.

   Esto esta muy bien si se conoce el nombre del programa y simplemente se
   quiere saber como usarlo. Pero ?y si no puede recordar el nombre de la
   orden? Se puede usar man para que realice una busqueda mediante palabras
   clave en las descripciones de programas utilizando el argumento -k:

 % man -k mail

   Dicha orden mostrara una lista de ordenes que contengan la palabra clave
   <<mail>> en sus descripciones. Esto es funcionalmente equivalente a usar
   apropos.

   Asi que, ?esta viendo todos esos programas tan atractivos en /usr/bin pero
   no tiene ni la menor idea de lo que la mayoria de ellos hace? Haga lo
   siguiente:

 % cd /usr/bin
 % man -f *

   o

 % cd /usr/bin
 % whatis *

   que hace exactamente lo mismo.

  3.13.2. Ficheros de informacion GNU: info

   FreeBSD incluye muchas aplicaciones y utilidades producidas por la FSF
   (Free Software Foundation). Ademas de con las correspondientes paginas de
   manual, estos programas vienen con documentos de hipertexto mas
   detallados, llamados ficheros info, los cuales pueden ser visualizados con
   info, o si tiene instalado emacs, con el modo info de emacs.

   Si quiere utilizar la orden info(1) teclee:

 % info

   Para una breve introduccion teclee h. Cuando necesite una referencia
   rapida, teclee ?.

     ----------------------------------------------------------------------

   [1] Esto es lo que i386 significa. Tenga en cuenta que incluso si no esta
   ejecutando FreeBSD en una CPU Intel 386, este va a ser i386. No es el tipo
   de su procesador, sino la <<arquitectura>> la que se muestra aqui.

   [2] Los <<scripts>> de inicio son programas que FreeBSD ejecuta
   automaticamente cuando arranca. Su funcion principal es preparar todo lo
   necesario para que todo lo demas se ejecute, e iniciar cualquier servicio
   que tenga configurado para ejecutarse en segundo plano algo utiles.

   [3] Tiene una descripcion bastante tecnica y correcta de todos los
   detalles de la consola FreeBSD y los controladores de teclado pueden
   encontrarse en las paginas de manual de syscons(4), atkbd(4),
   vidcontrol(1) y kbdcontrol(1). No nos extenderemos en los detalles aqui,
   pero el lector interesado siempre puede consultar dichas paginas de manual
   si quiere una explicacion mas detallada y profunda de como funcionan estas
   cosas.

   [4] Esto no es del todo cierto (ciertas cosas no pueden ser interrumpidas.
   Por ejemplo, si el proceso esta tratando de leer desde un fichero que esta
   en otro sistema de la red, y el otro sistema no esta disponible por alguna
   razon (por estar apagada, o que la red tenga un fallo), tenemos un caso de
   lo que llamamos <<proceso ininterrumpible>>. Mas tarde, al proceso se le
   acabara el tiempo de espera, generalmente pasados dos minutos. Tan pronto
   como esto ocurra el proceso sera liquidado.

Capitulo 4. Instalacion de aplicaciones: <<packages>> y ports

   Tabla de contenidos

   4.1. Sinopsis

   4.2. Aproximacion a la instalacion de software

   4.3. Como encontrar aplicaciones

   4.4. Uso del sistema de packages

   4.5. Uso de la coleccion de ports

   4.6. Despues de instalar un port

   4.7. Ports que no funcionan

4.1. Sinopsis

   FreeBSD viene con una excelente coleccion de herramientas de sistema como
   parte del sistema base. A pesar de esto, existe gran cantidad de cosas que
   uno requiere hacer para poner las cosas realmente en marcha, para lo cual
   se necesita instalar software adicional de terceros. FreeBSD ofrece dos
   tecnologias complementarias para instalar software de terceros en nuestro
   sistema: la Coleccion de Ports de FreeBSD y <<packages>>(paquetes)
   binarios. Cualquiera de los dos sistemas puede usarse para instalar las
   versiones mas recientes, de forma local o directamente desde la red.

   Despues de leer este capitulo usted sabra:

     * Como instalar packages binarios de software de terceros.

     * Como compilar software de terceros desde la Coleccion de Ports.

     * Como eliminar packages o ports instalados previamente.

     * Como sobreescribir los valores por omision que utiliza la coleccion de
       ports.

     * Como encontrar la aplicacion adecuada.

     * Como actualizar aplicaciones.

4.2. Aproximacion a la instalacion de software

   Si ha usado un sistema UNIX(R) con anterioridad sabra que el procedimiento
   tipico para instalar software de terceros es algo similar a esto:

    1. Descargar el software, que puede distribuirse en formato de codigo
       fuente o binario.

    2. Desempaquetar el software de su formato de distribucion (normalmente
       en un <<tarball>> comprimido con compress(1), gzip(1) o bzip2(1)).

    3. Consultar la documentacion (quizas un fichero INSTALL o README, o los
       ficheros del subdirectorio doc/) para ver como instalar el software.

    4. Si el software se distribuye como fuente, compilarlo. Esto puede
       requerir que editemos el fichero Makefile o que ejecutemos el
       <<script>> configure, entre otras cosas.

    5. Instalar y probar el software.

   Y esto solamente si todo marcha bien. Si esta instalando un software que
   no ha sido portado especificamente para FreeBSD, puede que sea necesario
   editar el codigo para que funcione correctamente.

   Si lo desea puede continuar instalando software de la forma
   <<tradicional>> en FreeBSD, aunque FreeBSD dispone de dos tecnologias que
   le pueden ahorrar gran cantidad de tiempo y esfuerzo: los packages y los
   ports. En el momento de escribir esto existen mas de 24,000 aplicaciones
   de terceros.

   En cualquier aplicacion el paquete de FreeBSD es un solo fichero que tiene
   que descargar. Los paquetes contienen copia de los programas binarios
   precompilados de la aplicacion, asi como cualquier fichero de
   configuracion o documentacion. Los paquetes descargados se pueden
   manipular con las herramientas de gestion de paquetes de FreeBSD:
   pkg_add(1), pkg_delete(1), pkg_info(1), etc. Instalar una aplicacion nueva
   puede realizarse con una sola orden.

   Un port de FreeBSD es una coleccion de ficheros disenada para automatizar
   el proceso de compilacion desde el codigo fuente.

   Recuerde que existen ciertos pasos que debera llevar a cabo para compilar
   un programa por usted mismo (descargar, desempaquetar, parchear, compilar
   e instalar). Los ficheros que conforman un port permiten que el sistema se
   encargue de todo esto. Usted ejecuta un conjunto simple de ordenes y el
   codigo fuente se descarga, desempaqueta, parchea, compila e instala.

   De hecho el sistema de ports tambien se puede usar para crear paquetes que
   posteriormente se pueden manipular con pkg_add y las demas utilidades de
   gestion de packages que veremos en breve.

   Tanto el sistema de ports como el de paquetes entienden las dependencias.
   Suponga que desea instalar una aplicacion que depende de que una
   biblioteca especifica este instalada. Tanto la biblioteca como la
   aplicacion existen en FreeBSD como paquete o port. Si utiliza pkg_add o el
   sistema de ports para instalar la aplicacion ambos notaran que la
   biblioteca no esta instalada y procederan a instalarla antes que nada.

   Dado que ambas tecnologis son similares quizas se pregunte por que FreeBSD
   se toma la molestia de contar con ambas. Los Packages y los Ports tienen
   sus propias ventajas, asi que cual utilizar dependera de su eleccion en
   cada momento.

   Ventajas de los Paquetes
     * El fichero tarball de un package es normalmente mas pequeno que el
       tarball con el codigo fuente de la aplicacion.

     * Los paquetes no requieren compilacion. En el caso de aplicaciones
       grandes, como Mozilla, KDE, o GNOME este detalle puede ser importante,
       especialmente si usa un equipo lento.

     * Los paquetes no requieren que comprenda el proceso que envuelve el
       compilar software bajo FreeBSD.

   Ventajas de los Ports
     * Normalmente los paquetes se compilan con opciones conservadoras, en
       virtud del gran numero de equipos donde se instalaran. Al instalar
       como port puede usted editar las preferencias para (por ejemplo)
       generar codigo especifico para un procesador Pentium IV o Athlon.

     * Algunas aplicaciones tienen opciones sobre lo que pueden y lo que no
       pueden hacer. Por ejemplo Apache se puede configurar con una gran
       variedad de opciones. Al compilarlo desde los ports usted no tiene por
       que aceptar las opciones predefinidas, puede seleccionar que opciones
       desea.

       En algunos casos existen varios paquetes para la misma aplicacion con
       diferentes opciones. Por ejemplo, Ghostscript esta disponible como
       paquete ghostscript y como paquete ghostscript-nox11, dependiendo de
       si usted cuenta o no con servidor X11. En este caso decidir puede ser
       sencillo e incluso pueden facilitarse packages con ambas opciones,
       pero elegir se puede volver un problema si hay mas de una o dos
       opciones de compilacion.

     * Las condiciones de la licencia de algunas aplicaciones prohiben la
       distribucion de binarios. Solo permiten la distribucion del codigo
       fuente.

     * Existe gente que no confia en los binarios. Al menos puede usted (en
       teoria) revisar el codigo fuente y localizar problemas potenciales.

     * Si tiene parches locales necesitara el codigo fuente para poder
       aplicarlos.

     * Hay gente a la que le gusta tener el codigo fuente para poder leerlo
       en ratos de ocio, modificarlo, tomar partes prestadas (cuando la
       licencia lo permite, claro esta), etc.

   Para tener constancia de los ports actualizados, suscribase a la lista de
   correo sobre los ports de FreeBSD y a la lista de correo sobre errores en
   los ports de FreeBSD.

  Aviso:

    Antes de instalar cualquier aplicacion consulte http://vuxml.freebsd.org
   para comprobar los posibles problemas de seguridad relacionados con ella.

   Tambien puede instalar security/portaudit que automaticamente comprobara
   las vulnerabilidades conocidas de todas las aplicaciones instaladas;
   tambien lo comprobara antes de compilar cualquier port. Mientras tanto,
   puede usar portaudit -F -a despues de instalar algunos packages.

   El resto de este capitulo le explicara como usar los ports y los packages
   para instalar software de terceros en FreeBSD.

4.3. Como encontrar aplicaciones

   Antes de poder instalar cualquier software debe saber que es lo que quiere
   instalar y como se llama la aplicacion.

   La lista de software disponible para FreeBSD crece constantemente.
   Afortunadamente existen varias formas de localizar lo que busca:

     * El sitio web de FreeBSD mantiene una lista (actualizada y que admite
       busquedas) de todas las aplicaciones disponibles para FreeBSD en la
       direccion http://www.FreeBSD.org/ports/ . Esta base esta dividida en
       categorias, y puede buscar por nombre (si lo sabe) o bien listar las
       aplicaciones disponibles en cierta categoria.

     * Dan Langille mantiene FreshPorts en http://www.FreshPorts.org/.
       FreshPorts verifica los cambios en las aplicaciones del arbol de
       ports, y le permite <<seguir>> uno o mas ports, sobre los que le
       enviaran un correo cada vez que se actualicen.

     * Si no conoce el nombre de la aplicacion que desea pruebe a usar un
       sitio como FreshMeat (http://www.freshmeat.net/) para encontrar una
       aplicacion; despues consulte el sitio web de FreeBSD para ver si la
       aplicacion ha sido portada.

     * Si sabe el nombre exacto del port y solo necesita saber en que
       categoria esta puede usar whereis(1). Simplemente escriba whereis
       fichero, donde fichero es el programa que quiera instalar. Si esta en
       su sistema, le dira donde esta:

 # whereis lsof
 lsof: /usr/ports/sysutils/lsof

       Esto nos dice que lsof (una utilidad de sistema) esta en el directorio
       /usr/ports/sysutils/lsof.

     * Otra forma de encontrar un port en particular es usando el mecanismo
       de busqueda integrado en la coleccion de ports. Para poder usar esta
       opcion de busqueda debe estar en el directorio /usr/ports. Una vez en
       ese directorio ejecute make search name=nombre-del-programa, donde
       nombre-del-programa es el nombre del programa que desea encontrar. Por
       ejemplo, si busca lsof:

 # cd /usr/ports
 # make search name=lsof
 Port:   lsof-4.56.4
 Path:   /usr/ports/sysutils/lsof
 Info:   Lists information about open files (similar to fstat(1))
 Maint:  obrien@FreeBSD.org
 Index:  sysutils
 B-deps:
 R-deps:

       Debe prestar especial atencion a la linea <<Path:>>de la salida,
       porque es la que indica donde puede encontrar el port. El resto de
       informacion no se necesita para instalar el port.

       Si quiere hacer una busqueda mas a fondo utilice make search
       key=cadena donde cadena es el termino que busca. Podra buscar nombres
       de ports, comentarios, descripciones y dependencias; tambien se puede
       usar para encontrar ports que tengan relacion con algun tema en
       particular si no conoce el nombre del programa que busca.

       En ambos casos la cadena de busqueda no distingue entre mayusculas y
       minusculas. Buscar <<LSOF>> dara los mismos resultados que buscar
       <<lsof>>.

4.4. Uso del sistema de packages

   Texto de Chern Lee.

  4.4.1. Instalar un package

   Puede usar pkg_add(1) para instalar un package de FreeBSD desde un fichero
   local o desde un servidor remoto via red.

   Ejemplo 4.1. Descarga de un paquete manualmente e instalacion en nuestro
   sistema

 # ftp -a ftp2.FreeBSD.org
 Connected to ftp2.FreeBSD.org.
 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
 331 Guest login ok, send your email address as password.
 230-
 230-     This machine is in Vienna, VA, USA, hosted by Verio.
 230-         Questions? E-mail freebsd@vienna.verio.net.
 230-
 230-
 230 Guest login ok, access restrictions apply.
 Remote system type is UNIX.
 Using binary mode to transfer files.
 ftp> cd /pub/FreeBSD/ports/packages/sysutils/
 250 CWD command successful.
 ftp> get lsof-4.56.4.tgz
 local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
 200 PORT command successful.
 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
 100% |**************************************************| 92375       00:00 ETA
 226 Transfer complete.
 92375 bytes received in 5.60 seconds (16.11 KB/s)
 ftp> exit
 # pkg_add lsof-4.56.4.tgz

   Si no tiene una fuente local de packages (por ejemplo un CDROM de FreeBSD)
   probablemente la mejor opcion sea utilizar el argumento -r de pkg_add(1),
   que hara que determine automaticamente el formato del objeto correcto,
   para posteriormente descargarlo e instalarlo desde un FTP.

 # pkg_add -r lsof

   En el ejemplo anterior el package correspondiente se descargara e
   instalara sin intervencion del usuario. Si desea utilizar una replica
   (<<mirror>>) de packages que no sea el sitio principal de FreeBSD solo
   tiene configurar la variable de entorno PACKAGESITE correctamente para
   sobreescribir el sitio predefinido. pkg_add(1) utiliza fetch(1) para
   descargar los ficheros, tomando como referencia varias variables de
   entorno, como FTP_PASSIVE_MODE, FTP_PROXY y FTP_PASSWORD. Quizas deba
   modificar alguna de estas si se encuentra detras de un cortafuegos, o usa
   un proxy FTP/HTTP. Consulte fetch(3) si quiere ver una lista completa.
   Observe tambien que en el ejemplo anterior usamos lsof en vez de
   lsof-4.56.4. Cuando usamos la opcion de descarga remota no es necesario
   especificar la version del paquete. pkg_add(1) descargara automaticamente
   la ultima version de la aplicacion.

  Nota:

   pkg_add(1) descargara la ultima version de su aplicacion si usa
   FreeBSD-CURRENT o FreeBSD-STABLE, pero si usa una version -RELEASE,
   descargara la version del package que se construyo con dicha version. Es
   posible configurar esto sobreescribiendo la variable de entorno
   PACKAGESITE.

   Los packages se destribuyen en formatos .tgz y .tbz. Puede encontrarlos en
   ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/, o en la distribucion de
   FreeBSD en CD-ROM. Todos los CDs en el set de 4 CDs de FreeBSD (y en el
   PowerPak, etc.) contienen packages en el directorio /packages. La
   estructura de los packages es similar a la del arbol de /usr/ports. Cada
   categoria tiene su propio directorio, y todos los paquetes se pueden
   encontrar dentro del directorio All.

   La estructura del directorio de packageckages es identica a la de los
   ports, y funcionan como un todo para conformar el sistema de
   paquetes/ports.

  4.4.2. Eliminar un package

   Para eliminar un package instalado en el sistema utilice pkg_delete(1).

 # pkg_delete xchat-1.7.1

  4.4.3. Miscelanea

   Toda la informacion de los packages se guarda en /var/db/pkg. Ahil
   encontrara la lista completa de paquetes instalados y las descripciones de
   los mismos.

4.5. Uso de la coleccion de ports

   La siguiente seccion incluye las instrucciones basicas para instalar o
   eliminar programas mediante la Coleccion de Ports de su sistema.

  4.5.1. Como obtener la Coleccion de Ports

   Para poder instalar ports primero debe hacerse, obviamente, con la
   Coleccion de Ports-; en esencia esta compuesta por Makefiles, parches y
   ficheros con la descripcion de los ports y esta en /usr/ports.

   Cuando instalo su sistema FreeBSD el programa sysinstall le pregunto si
   queri instalar la Coleccion de Ports. Si contesto que no siga estas
   instrucciones:

   Procedimiento 4.1. Mediante CVSup

   Este es un metodo rapido de conseguir y mantener una copia de la Coleccion
   de Ports al dia mediante el protocolo CVSup. Si quiere saber mas sobre
   CVSup consulte Uso de CVSup.

  Nota:

   La implementacion del protocolo CVSup que se incluye en FreeBSD se llama
   csup. Aparecio en FreeBSD 6.2. Los usuarios de releases anteriores de
   FreeBSD puden instalar net/csup como port o package.

   Asegurese de que /usr/ports esta vacio antes de ejecutar csup por primera
   vez. Si ya tiene la Coleccion de Ports porque la ha instalado por otros
   medios csup no purgara los parches de ports eliminados.

    1. Ejecute csup:

 # csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

       Cambie cvsup.FreeBSD.org por algun otro servidor CVSup que tenga
       cerca. Consulte Replicas CVSup (Seccion 30.2.2, "Servidores"), donde
       encontrara una lista completa de las replicas CVSup.

  Nota:

       Puede usar una version de ports-supfile confeccionada a su gusto, por
       ejemplo para evitar tener que indicarle el nombre del servidor CVSup a
       mano.

         1. Haga lo siguiente: como root copie
            /usr/share/examples/cvsup/ports-supfile en otro sitio, por
            ejemplo /root o su directorio /home.

         2. Edite ports-supfile.

         3. Reemplace CHANGE_THIS.FreeBSD.org por un servidor CVSup que este
            cerca de donde este usted. Consulte Replicas CVSup
            (Seccion 30.2.2, "Servidores") si necesita ver una lista completa
            de las mismas.

         4. Ejecute csupdel siguiente modo:

 # csup -L 2 /root/ports-supfile

    2. Al ejecutar csup(1) descargara y aplicara todos los cambios recientes
       que haya sufrido la Coleccion de Ports, pero tenga en cuenta que no
       actualizara ninguno de los ports que ya tenga instalados en su
       sistema.

   Procedimiento 4.2. Mediante portsnap

   Portsnap es un metodo alternativo de distribuir la Coleccion de Ports. Se
   incluyo por primera vez en FreeBSD 6.0. Puede instalar portsnap(8) en
   versiones anteriores de FreeBSD como port (ports-mgmt/portsnap) o como
   package:

 # pkg_add -r portsnap

    1. Puede saltarse esta paso a partir de FreeBSD 6.1-RELEASE y en
       versiones recientes de Portsnap (port o package). /usr/ports se creara
       automaticamente la primera vez que ejecute portsnap(8). En versiones
       anteriores de portsnap habia que crear un /usr/ports vacio si no
       existia previamente:

 # mkdir /usr/ports

    2. Descargue una instantanea comprimida de la Coleccion de Ports en
       /var/db/portsnap. Hecho esto puede desconectar de Internet si quiere.

 # portsnap fetch

    3. Si esta ejecutando Portsnap por vez primera debe extraer la
       instantanea en /usr/ports:

 # portsnap extract

       Si ya tiene un /usr/ports y solamente esta actualizando su arbol de
       ports ejecute lo siguiente:

 # portsnap update

   Procedimiento 4.3. Mediante Sysinstall

   Este metodo implica el uso de sysinstall para instalar la Coleccion de
   Ports.

    1. Como usuario root ejecute sysinstall (/stand/sysinstall en cualquier
       version previa a FreeBSD 5.2); del siguiente modo:

 # sysinstall

    2. Posicionese en la opcion Configure y pulse Intro.

    3. Seleccione la opcion Distributions y pulse Intro.

    4. Seleccione la opcion ports y pulse la barra espaciadora.

    5. Seleccione el medio de instalacion deseado (CDROM, FTP, etc.)

    6. Dirijase a la opcion Exit y pulse Intro.

    7. Pulse X para salir de sysinstall.

  4.5.2. Instalacion de ports

   Al hablar de la Coleccion de Ports lo primero que hay que explicar es a
   que nos referimos cuando hablamos de un <<esqueleto>> (skeleton). El
   esqueleto de un port es un conjunto minimo de ficheros que indican a
   FreeBSD como compilar e instalar un programa. Cada esqueleto incluye:

     * Un Makefile. Este Makefile contiene diversas sentencias que le indican
       al sistema como compilarlo y donde instalarlo en su sistema.

     * Un fichero distinfo. Este fichero contiene informacion sobre los
       ficheros que se debe descargar para poder compilar el programa, asi
       como el identificador <<checksum>>, que se usa para comprobar mediante
       md5(1) que la descarga ha sido correcta y que el la integridad del
       fichero esta garantizada.

     * Un directorio files. Este directorio contiene los parches necesarios
       para compilar e instalar el programa en su sistema FreeBSD.
       Basicamente los parches son pequenos ficheros que especifican cambios
       en ficheros concretos. Su formato es en texto plano y suelen decir
       cosas como <<borra la linea 10>> o <<Cambia la linea 26 por esto>>.
       Estos parches tambien se conocen como <<diffs>> ya que se generan con
       diff(1).

       Es posible que este directorio tambie contenga algun otro fichero
       necesario para compilar e instalar el port.

     * Un fichero pkg-descr. Es una descripcion mas detallada del programa.
       En algunas ocasiones ocupa varias lineas.

     * Un fichero pkg-plist. Es una lista de todos los ficheros que instalara
       el port. Tambien le indica al sistema de ports que ficheros eliminar
       durante la desinstalacion del programa.

   Algunos ports tienen otros ficheros, como pkg-message. El sistema de ports
   los usa para gestionar situaciones especiales. Si desea conocer los
   detalles, incluso sobre los ports en general, consulte el libro FreeBSD
   Porter's Handbook.

   El port incluye las instrucciones necesarias para obtener software a
   partir del codigo fuente, pero no incluye el codigo. Puede obtener el
   codigo desde un CDROM o desde Internet. El codigo se distribuye del modo
   que el autor estime oportuno. Normalmente es un fichero tar comprimido con
   gzip, pero puede comprimirse con otra herramienta o incluso no estar
   comprimido. El codigo del programa, venga como venga, se llama
   <<distfile>>. A continuacion veremos los dos metodos de instalacion de un
   port.

  Nota:

   Debe ser el usuario root para instalar ports.

  Aviso:

    Antes de instalar cualquier port asegurese de tener la Coleccion de Ports
   actualizada y de comprobar en http://vuxml.freebsd.org/ la existencia de
   posibles problemas de seguridad que pudiera tener el port.

   Puede realizar la comprobacion de seguridad con portaudit antes de
   instalar cualquier aplicacion. Esta herramienta esta en la Coleccion de
   Ports (security/portaudit). Le rogamos que al menos considere ejecutar
   portaudit -F antes de instalar un port nuevo para que descargue la nueva
   base de datos de vulnerabilidades. Durante la comprobacion diaria de
   seguridad actualizara la base de datos y hara una auditoria del sistema.
   Para mas informacion lea las paginas de manual de portaudit(1) y
   periodic(8).

   La Coleccion de Ports asume que tiene usted conexion con Internet. Si no
   es asi tendra que disponer de una copia del distfile en
   /usr/ports/distfiles.

   El primer paso es ubicarse en el directorio del port que desea instalar:

 # cd /usr/ports/sysutils/lsof

   Una vez en el directorio lsof puede ver el esqueleto del port. El
   siguiente paso es compilar el port. Solamente tiene que teclear make en el
   prompt. Una vez hecho vera algo como esto:

 # make
 >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
 >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
 ===>  Extracting for lsof-4.57
 ...
 [La salida de la descompresion se ha eliminado]
 ...
 >> Checksum OK for lsof_4.57D.freebsd.tar.gz.
 ===>  Patching for lsof-4.57
 ===>  Applying FreeBSD patches for lsof-4.57
 ===>  Configuring for lsof-4.57
 ...
 [La salida de la configuracion se ha eliminado]
 ...
 ===>  Building for lsof-4.57
 ...
 [La salida de la compilacion se ha eliminado]
 ...
 #

   Una vez que acabe la compilacion se le devolvera el control del prompt. El
   siguiente paso es instalar el port. Para ello bastara con que anada una
   palabra a la orden make: esa palabra es install:

 # make install
 ===>  Installing for lsof-4.57
 ...
 [La salida de la instalacion se ha eliminado]
 ...
 ===>   Generating temporary packing list
 ===>   Compressing manual pages for lsof-4.57
 ===>   Registering installation for lsof-4.57
 ===>  SECURITY NOTE:
       This port has installed the following binaries which execute with
       increased privileges.
 #

   Una vez que vuelva usted al prompt podra ejecutar la aplicacion que acaba
   de instalar. Dado que lsof es un programa que se ejecuta con privilegios
   altos se le ha mostrado una advertencia de seguridad. Durante la
   compilacion e instalacion es posible que hayan aparecido otros.

   Le recomendamos que borre el directorio que contiene todos los ficheros
   temporales necesarios durante la compilacion. No solo consume valioso
   espacio en disco sino que puede dar problemas cuando vaya a actualizar el
   port a una version mas reciente.

 # make clean
 ===>  Cleaning for lsof-4.57
 #

  Nota:

   Puede ahorrarse teclear dos pasos si para instalar un port teclea make
   install clean en lugar de make, make install y make clean como tres pasos
   separados.

  Nota:

   Algunas shells mantienen una cache de ordenes disponibles en los
   directorios que aparecen en la variable de entorno PATH con el fin de
   acelerar las operaciones de busqueda de ejecutables de esas ordenes. Si
   usa una de esas shells tendra que utilizar la orden rehash tras instalar
   un port o no podra ejecutar aplicaciones recien instaladas. Esta orden
   funciona en shells como tcsh. Utilice hash -r en shells sh. Para mas
   informacion consulte la documentacion de su shell.

   Algunos DVD-ROM de terceros, como el FreeBSD Toolkit de FreeBSD Mall
   contienen distfiles. Puede usarlos con la Coleccion de Ports. Monte el
   DVD-ROM en /cdrom. Si utiliza un punto de montaje diferente asigne a
   CD_MOUNTPTS el valor adecuado. Los distfiles se iran copiando
   automaticamente a medida que vayan siendo necesarios.

  Nota:

   Por favor, tenga en cuenta que la licencia de unos cuantos ports muy
   concretos no permite su distribucion en CD-ROM. Puede deberse a que es
   necesario rellenar un formulario de registro antes de descargarlo, porque
   la redistribucion no este permitida o por otra razon. Si quiere instalar
   un port que no esta en el CD-ROM tendra que tener salida a Internet.

   El sistema de ports utiliza fetch(1) para descargar ficheros; en este
   proceso intervienen varias variables de entorno, como FTP_PASSIVE_MODE,
   FTP_PROXY, y FTP_PASSWORD. Si esta detras de un cortafuegos tendra que
   asignar valores a una o mas de estas variables, asi como si necesita
   utilizar un proxy FTP/HTTP. Consulte fetch(3), donde econtrara una lista
   detallada.

   La opcion make fetch se creo para los usuarios que no disponen de conexion
   continua. Ejecute esta orden en el directorio raiz (/usr/ports) y se
   descargaran todos los ficheros necesarios. Esta orden tambien funciona en
   directorios situados mas abajo, por ejemplo /usr/ports/net. Tenga en
   cuenta que si un port depende de librerias u otros ports estos distfiles
   no se descargaran, a menos que reemplace fetch por fetch-recursive, que se
   encargara de descargar todas las dependencias de cada port.

  Nota:

   Si quiere compilar todos los ports de una categoria y de una sola vez
   ejecutando la orden make en el directorio raiz, de muy similar manera que
   lo que se acaba de ver con makefetch. Tenga en cuenta que esto es bastante
   peligroso porque algunos ports no pueden coexistir. Tambien se dan casos
   de ports que instalan instalan dos ficheros diferentes con el mismo
   nombre.

   En algunos casos (raros) el usuario tendra que descargar los tarball de un
   sitio que no es el que se guarda en la variable de entorno MASTER_SITES
   (el sitio desde el que se descargan todos los demas normalmente). Puede
   sobreescribir la opcion MASTER_SITES con la siguiente orden:

 # cd /usr/ports/directory
 # make MASTER_SITE_OVERRIDE= \
 ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

   En este ejemplo vamos a darle a la opcion MASTER_SITES el valor
   ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.

  Nota:

   Algunos ports permiten (o incluso exigen) que se le faciliten opciones de
   compilacion para activar o desactivar partes de la aplicacion que no se
   necesiten, determinadas opciones de seguridad, etc. Casos tipicos de esto
   son www/mozilla, security/gpgme, and mail/sylpheed-claws. Cuando debe
   usted tomar este tipo de decisiones se le muestra un mensaje con las
   opciones disponibles.

    4.5.2.1. Sobreescribir directorios por omision de ports

   Algunas veces es util (u obligatorio) utilizar un directorio de trabajo o
   un <<target>> distinto al que tenemos por omision. Las variables de
   entorno WRKDIRPREFIX y PREFIX pueden sobreescribirse segun nuestra
   conveniencia. Veamos un ejemplo:

 # make WRKDIRPREFIX=/usr/home/ejemplo/ports install

   compilara el port en /usr/home/ejemplo/ports y lo instalara en /usr/local.

 # make PREFIX=/usr/home/ejemplo/local install

   lo compilara en /usr/ports y lo instalara en /usr/home/ejemplo/local.

   Y por supuesto,

 # make WRKDIRPREFIX=../ports PREFIX=../local install

   combinara ambas; (ocupa demasiado para mostrarlo en una pagina, pero la
   idea general queda clara).

   Puede asignar valores a estas variables del mismo modo que a cualquier
   otra de su entorno. Consulte la documentacion de su shell para mas
   informacion.

    4.5.2.2. Uso de imake

   Algunos ports que usan imake (un componente del Sistema X Window) no
   funcionan correctamente con PREFIX e insistiran en instalarse en
   /usr/X11R6. Del mismo modo algunos ports de Perl ignoran PREFIX y se
   instalan en el arbol de Perl. Hacer que estos ports respeten PREFIX es
   dificil y a veces imposible.

    4.5.2.3. Reconfigurar ports

   Al compilar ciertos ports se le presentara un menu basado en ncurses en el
   cual podra elegir entre mas o menos opciones de compilacion. No es raro
   que los usuarios quieran volver a usar ese menu para anadir, quitar o
   cambiar opciones una vez que el port ya esta compilado. Hay bastantes
   formas de hacerlo. Una manera es entrar al directorio que contiene el port
   y teclear make config, que hara que se le presente de nuevo el menu con
   las opciones que estuvieran seleccionadas previamente. Otra opcion es usar
   la orden make showconfig, que le mostrara todas las opciones de
   configuracion del port. Hay otra opcion mas, make rmconfig, que borrara
   todas las opciones que estuvieran seleccionadas y le permitira por tanto
   empezar desde cero. Todas estas opciones y muchas mas las encontrara
   descritas con gran detalle en ports(7).

  4.5.3. Como desinstalar ports

   Ahora que sabe instalar ports probablemente quiera saber como eliminarlos;
   puede que haya instalado alguno y posteriormente se haya dado cuenta de
   que ha instalado el port incorrecto. Vamos a desinstalar el port del
   ejemplo anterior (que, para todos aquellos que no estaban atentos, era
   lsof). Igual que al instalar ports, lo primero que debemos hacer es
   ubicarnos en el directorio del port que deseamos eliminar del sistema, en
   nuestro caso /usr/ports/sysutils/lsof. Los ports se desinstalan
   exactamente igual que los packages; esto se explica en la seccion de
   packages) utilizando la orden pkg_delete(1):

 # pkg_delete lsof-4.57

  4.5.4. Actualizacion de ports

   Antes de nada necesita ver una lista de ports instalados de los cuales
   exista una nueva version en la Coleccion de Ports. Utilice pkg_version(1):

 # pkg_version -v

    4.5.4.1. /usr/ports/UPDATING

   Una vez actualizada la Coleccion de Ports (y antes de intentar actualizar
   ningun port) debe consultar /usr/ports/UPDATING. Este fichero describe
   todas las novedades, problemas que pueden encontrarse y pasos que deben
   seguir los usuarios al actualizar un port; hay cambios de formato, cambios
   de ubicacion de ficheros de configuracion o incompatibilidades con
   versiones anteriores.

   Si UPDATING se contradice de cualquier modo con lo que lea aqui tenga muy
   encuenta que lo que aparezca en UPDATING tiene prioridad absoluta.

    4.5.4.2. Actualizacion de ports con portupgrade

   La aplicacion portupgrade se diseno para actualizar facilmente los ports
   instalados en un sistema. Puede instalarla desde el port
   ports-mgmt/portupgrade. La instalacion es como al de cualquier otro port,
   use la orden make install clean command:

 # cd /usr/ports/ports-mgmt/portupgrade
 # make install clean

   Compruebe la lista de ports instalados con pkgdb -F y arregle todas las
   inconsistencias que aparezcan. Le recomendamos que haga esta comprobacion
   de forma regular y siempre antes de una actualizacion.

   Si ejecuta portupgrade -a portupgrade intentara actualizar todos y cada
   uno de los ports instalados en su sistema. Utilice el parametro -i si
   quiere que le pida confirmacion antes de actualizar cada uno de los ports.

 # portupgrade -ai

   Si solamente quiere actualizar una sola aplicacion (y no absolutamente
   todos los ports) utilice la orden portupgrade nombre-de-aplicacion. Anada
   el modificador -R si quiere que portupgrade actualice antes todos los
   ports de los que depende la aplicacion en cuestion.

 # portupgrade -R firefox

   Si quiere usar packages en lugar de ports use el modificador -P flag. Con
   esta opcion portupgrade busca en los directorios locales que aparezcan en
   PKG_PATH o descarga los packages desde un sitio remoto si es que no los
   encuentra en local. Si es imposible encontrar los packages ni en local ni
   en remoto portupgrade utilizara ports. Si no quiere usar ports pase lo que
   pase utilice el modificador -PP.

 # portupgrade -PP gnome2

   Si quiere solamente descargar los distfiles (o los packages, usando -P)
   sin compilar ni instalar nada, use -F. Para mas informacion consulte
   portupgrade(1).

    4.5.4.3. Actualizacion de ports con portmanager

   Portmanager es otra aplicacion pensada para la actualizacion sencilla de
   ports instalados en el sistema. Puede encontrarla en
   ports-mgmt/portmanager:

 # cd /usr/ports/ports-mgmt/portmanager
 # make install clean

   Puede actualizar todos los ports que tenga instalados con una sola orden:

 # portmanager -u

   Si usa el modificador -ui se le pedira confirmacion a cada paso que
   Portmanager vaya a dar. Portmanager tambien puede usarse para instalar
   nuevos ports. A diferencia del habitual make install clean actualizara
   todos los ports que dependan antes de compilar e instalar ese port que
   queramos instalar.

 # portmanager x11/gnome2

   Si aparecen problemas con las dependencias del port que quiere instalar
   puede usar Portmanager para recompilar todos ello en el orden correcto.
   Una vez que acabe el port que estaba dando problemas sera tambien
   recompilado.

 # portmanager graphics/gimp -f

   Para mas informacion consulte portmanager(1).

    4.5.4.4. Actualizacion de ports con portmaster

   Portmaster es otra aplicacion para actualizar ports. Portmaster se diseno
   para que utilizara las herramientas del sistema <<base>> (es decir, no
   depende de otros ports) y utiliza la informacion que se almacena en el
   directorio /var/db/pkg/ para determinar que port es el que hay que
   actualizar. Puede encontrarlo en ports-mgmt/portmaster:

 # cd /usr/ports/ports-mgmt/portmaster
 # make install clean

   Portmaster agrupa los ports en cuatro categorias:

     * <<Root ports>> (no tienen dependencias, ningun port depende de ellos)

     * <<Trunk ports>> (no tienen dependencias, otros ports dependen de
       ellos)

     * <<Branch ports>> (tienen dependencias, otros ports dependen de ellos)

     * <<Leaf ports>> (tienen dependencias, ningun port depende de ellos)

   Puede ver una lista de los ports instalados y buscar actualizaciones para
   ellos usando el modificador -L :

 # portmaster -L
 ===>>> Root ports (No dependencies, not depended on)
 ===>>> ispell-3.2.06_18
 ===>>> screen-4.0.3
         ===>>> New version available: screen-4.0.3_1
 ===>>> tcpflow-0.21_1
 ===>>> 7 root ports
 ...
 ===>>> Branch ports (Have dependencies, are depended on)
 ===>>> apache-2.2.3
         ===>>> New version available: apache-2.2.8
 ...
 ===>>> Leaf ports (Have dependencies, not depended on)
 ===>>> automake-1.9.6_2
 ===>>> bash-3.1.17
         ===>>> New version available: bash-3.2.33
 ...
 ===>>> 32 leaf ports

 ===>>> 137 total installed ports
         ===>>> 83 have new versions available

   Con la siguiente orden puede actualizar todos los ports del sistema:

 # portmaster -a

  Nota:

   Por omision Portmaster guardara una copia de seguridad (un package) de
   cada port antes de borrarlo. Si la instalacion de la nueva version
   funciona Portmaster borrara el package. Si utiliza -b le dira a Portmaster
   que no borre automaticamente el package. Si usa el modificador -i
   arrancara Portmaster en modo interactivo, lo que significa que le pedira
   confirmacion antes de actualizar cada port.

   Si se encuentra con errores durante el proceso de actualizacion puede
   utilizar el modificador -f para actualizar o recompilar todos los ports:

 # portmaster -af

   Tambien puede usar Portmaster para instalar nuevos ports en el sistema,
   actualizando todas sus dependencias antes de compilar e instalar el nuevo
   port:

 # portmaster shells/bash

   Por favor, consulte portmaster(8) para mas informacion.

  4.5.5. Los ports y el espacio en disco

   Usar la Coleccion de Ports consume mucho espacio de disco segun pasa el
   tiempo. Por culpa de la tendencia del arbol de ports a crecer sin parar le
   recomendamos que despues de compilar e instalar sofware desde los ports
   recuerde limpiar los directorios temporales work mediante la orden make
   clean. Puede limpiar de un plumazo los directorios temporales de toda la
   Coleccion de Ports con la siguiente orden:

 # portsclean -C

   Rapidamente acumulara gran cantidad de viejas distribuciones de codigo en
   distfiles. Puede borrarlos a mano, pero tambien puede usar la siguiente
   orden para borrar todos los distfiles que no tengan relacion con ningun
   port:

 # portsclean -D

   Tambien puede borrar todos los distfiles sin relacion con ningun port
   instalado en el sistema:

 # portsclean -DD

  Nota:

   portsclean forma parte de la <<suite>> portupgrade.

   No olvide borrar los ports instalados una vez que deja de necesitarlos.
   Hay una herramienta muy util para ayudar a automatizar esta tarea:
   ports-mgmt/pkg_cutleaves.

4.6. Despues de instalar un port

   Una vez que ha instalado una nueva aplicacion normalmente deberaa leer
   toda la documentacion que incluya, editar los ficheros de configuracion
   necesarios, asegurarse de que la aplicacion se ejecute al arrancar el
   sistema (si es un daemon)etc.

   Obviamente los pasos exactos para configurar cada aplicacion son distintos
   de una a otra. De cualquier forma, si acaba de instalar aplicacion y se
   pregunta <<?Y ahora que?>> estos consejos puede que le ayuden:

     * Use pkg_info(1) para ver que ficheros se instalaron y donde. Por
       ejemplo, si instalon el paquete Un-Package 1.0.0, lo siguiente:

 # pkg_info -L un-package-1.0.0 | less

       mostrara los ficheros instalados por el paquete. Preste especial
       atencion a los ficheros en el directorio man/, que son las paginas de
       ayuda y los del directorio etc/, que contiene los ficheros de
       configuracion; bajo el directorio doc/ podra encontrar informacion mas
       detallada.

       Si no esta seguro de que version del paquete ha instalado, teclee:

 # pkg_info | grep -i un-package

       y vera todos los paquetes que se llaman un-package. Reemplace
       un-package en la linea de ordenes que tenga que usar en su caso.

     * Una vez que ha identificado las paginas de manual de la aplicacion
       reviselas mediante man(1). Revise tambien los ficheros de
       configuracion, asi como cualquier otro tipo de documentacion que venga
       con el software.

     * Si la aplicacion tiene sitio web visitelo. Es muy posible que
       encuentre mas documentacion, listas de preguntas frecuentes (FAQ),
       etc. Si no sabe cual puede ser la direccion del sitio web examine la
       salida de la orden

 # pkg_info un-package-1.0.0

       a veces incluye una linea WWW:, que contiene la direccion del sitio
       web de la aplicacion.

     * Los ports que deben arrancar con el sistema (como los servidores de
       Internet) normalmente instalaran un <<script>> de ejemplo en
       /usr/local/etc/rc.d. Debe revisar este <<script>> para comprobar que
       todo sea correcto, editarlo o renombrarlo si fuera necesario. Consulte
       Como arrancar servicios para mas informacion.

4.7. Ports que no funcionan

   Si encuentra un port que no funciona hay varias cosas que puede hacer:

    1. Consulte en la Base de datos de informes de error si ya se ha
       publicado un parche que lo solucione. Si es el caso puede aplicar
       aplicar el parche en su sistema.

    2. Pida ayuda al responsable del mantenimiento (conocido como
       <<mantainer>>) del port. Teclee make maintainer o consulte el Makefile
       del port si no sabe cual es la direccion de correo del <<mantainer>>.
       Recuerde que debe incluir el nombre y la version del port. Envie la
       linea que contiene $FreeBSD: al principio del Makefile del port y
       salida con el error que obtiene al intentar usar la aplicacion.

  Nota:

       Algunos ports no son responsabilidad de un individuo sino de una lista
       de correo. Muchas, aunque no todas, tienen un aspecto parecido a
       <freebsd-nombredelalista@FreeBSD.org>. Por favor, tengalo en cuenta
       cuando envie ese correo sobre el port que no funciona.

       Hay un caso especial: Los ports que tienen como <<mantainer>>
       <freebsd-ports@FreeBSD.org> en realidad no son responsabilidad de
       nadie. Los parches y el soporte, en caso de existir, vienen de la
       comunidad de usuarios y desarrolladores que estan suscritos a la
       lista. Por cierto, siempre hacen falta mas voluntarios.

       Si no recibe respuesta utilice send-pr(1) para enviar un informe de
       errores. Consulte Como escribir informes de error) [5]

    3. Arreglarlo. El <<Porter's Handbook>> incluye informacion detallada
       sobre la infraestructura de los ports, asi que puede arreglar un port
       roto o incluso enviar su propio port.

    4. Descargue el paquete de algun sitio FTP. El servidor <<principal>> de
       la coleccion de paquetes esta en el directorio de paquetes de
       ftp.FreeBSD.org pero asegurese de mirar antes en la replica mas
       proxima. Esta es una forma de instalar aplicaciones mas facil y mas
       rapida. Instale el paquete mediante pkg_add(1).

     ----------------------------------------------------------------------

   [5] Hay traduccion al castellano de este articulo. Esta aqui:
   http://www.freebsd.org/doc/es_ES.ISO8859-1/articles/problem-reports/article

Capitulo 5. El sistema X Window

   Actualizado al servidor X11 de X.Org por Ken Tom y Marc Fonvieille.
   Tabla de contenidos

   5.1. Sinopsis

   5.2. Entender X

   5.3. Instalar X11

   5.4. Configuracion de X11

   5.5. Uso de tipos en X11

   5.6. El gestor de pantalla X

   5.7. Entornos de escritorio

5.1. Sinopsis

   FreeBSD usa X11 para proporcionar una potente interfaz grafica. X11 es una
   implementacion de codigo abierto del sistema X Window que incluye Xorg y
   XFree86(TM). En las versiones de FreeBSD hasta FreeBSD 4.10-RELEASE y
   FreeBSD 5.3-RELEASE el sistema X window que se instalara por defecto es
   XFree86(TM), el servidor X11 distribuido por el proyecto XFree86(TM).
   Despues de FreeBSD 5.3-RELEASE el sistema X Window paso a ser Xorg, el
   servidor X11 distribuido por la Fundacion X.Org.

   Este capitulo cubre la instalacion y configuracion de X11 poniendo enfasis
   en Xorg. Si quiere informacion sobre la configuracion de XFree86(TM) o
   versiones anteriores de Xorg consulte las versiones archivadas del
   <<Handbook>> de FreeBSD en http://docs.FreeBSD.org/doc/.

   Para mas informacion del hardware de video que X11 soporta consulte la
   pagina web de Xorg.

   Despues de leer este capitulo usted sabra:

     * Cuales son los diferentes componentes del sistema X Window y como
       interoperan.

     * Como instalar y configurar X11.

     * Como instalar y usar diferentes gestores de ventanas.

     * Como usar tipos de letra TrueType(R) en X11.

     * Como preparar su sistema para iniciar la sesion de forma grafica
       (XDM).

   Antes de leer este capitulo deberia:

     * Saber como instalar software de terceros (Capitulo 4, Instalacion de
       aplicaciones: <<packages>> y ports).

  Nota:

   Este capitulo cubre la instalacion y configuracion de los servidores X11
   Xorg y XFree86(TM). La mayoria de los ficheros de configuracion, ordenes y
   sintaxis son identicos. En los casos en que haya diferencias se mostrara
   la sintaxis de Xorg y XFree86(TM).

5.2. Entender X

   Usar X por primera vez puede resultar chocante para alguien familiarizado
   con otros entornos graficos, como Microsoft(R) Windows(R) o Mac OS(R).

   No es necesario entender todos los detalles de los diferentes componentes
   de X y como interactuan, pero un conocimiento basico hace posible el
   sacarle mas provecho a la potencia de X.

  5.2.1. ?Por que X?

   X no es el primer sistema de ventanas escrito para UNIX(R) pero es el mas
   popular de todos ellos. El equipo original que desarrollo X trabajo en
   otro sistema de ventanas antes de escribir X. Ese sistema se llamo <<W>>
   (de <<Window>> que significa ventana en ingles). X era solo la siguiente
   letra en el alfabeto Romano.

   X se puede llamar <<X>> <<X Window System>>, <<X11>> y de otras formas.
   Tambien puede usar el termino <<X Windows>> para describir X11 si lo que
   quiere es ofender a algunas personas; si quiere saber mas sobre esto
   consulte X(7).

  5.2.2. El modelo cliente/servidor de X

   X fue disenado desde el principio pensando en redes y adopto un modelo
   <<cliente-servidor>>.

   En el modelo de X el <<servidor X>> se ejecuta en la maquina que tiene el
   teclado, monitor y raton. El servidor es responsable de manejar la
   pantalla, la entrada de datos a traves del teclado, el raton, etc. Cada
   aplicacion X (como una XTerm o Netscape(R)) es un <<cliente>>. Un cliente
   manda mensajes al servidor como <<Por favor dibuja una ventana en estas
   coordenadas>> y el servidor devuelve mensajes como <<El usuario ha pulsado
   el boton OK>>.

   Si solo hay un ordenador involucrado, como en una casa o una pequena
   oficina, el servidor X y los clientes X seguramente se ejecutaran en el
   mismo sistema. Sin embargo, es perfectamente posible ejecutar el servidor
   X en un sistema de escritorio menos potente y ejecutar las aplicaciones X
   (los clientes) en, por ejemplo, la potente y cara maquina que sirve la
   oficina. En este panorama la comunicacion entre el cliente X y el servidor
   tiene lugar a traves de la red.

   Esto confunde a algunas personas, porque la terminologia es exactamente
   opuesta a lo que ellos esperan. Ellos esperan que el <<servidor X>> sea la
   maquina grande que hay en el sotano y que el <<cliente X>> sea la maquina
   de su mesa.

   Es importante que recuerde que el servidor X es la maquina con el monitor
   y el teclado y que los clientes X son los programas que muestran las
   ventanas.

   No hay nada en el protocolo que obligue a que el cliente y el servidor
   tengan que usar el mismo sistema operativo o incluso que esten en el mismo
   sistema. Es posible ejecutar un servidor X en Microsoft(R) Windows(R) o en
   el Mac OS(R) de Apple; de hecho hay varias aplicaciones libres y
   comerciales que hacen exactamente eso.

   A partir de FreeBSD 5.3-RELEASE, el servidor X que se instala con FreeBSD
   es Xorg, que es libre y se distribuye bajo una licencia muy similar a la
   de FreeBSD. Tambien hay servidores X comerciales para FreeBSD.

  5.2.3. El gestor de ventanas

   La filosofia de diseno de X es mas parecida a la de UNIX(R):
   <<herramientas, no normas>>. Esto significa que X no impone como debe
   hacerse una tarea. En lugar de eso proporciona herramientas al usuario y
   es responsabilidad suya decidir que hacer con ellas.

   Esta filosofia se extiende a X; no impone como deben verse las ventanas en
   la pantalla, como moverlas con el raton, que teclas deberian usarse para
   moverse entre ventanas (por ejemplo Alt+Tab, en Microsoft(R) Windows(R)),
   como deben ser las barras de titulo en cada ventana, si tienen o no boton
   de cierre, etc.

   En lugar de eso X delega esta responsabilidad en una aplicacion llamada
   <<gestor de ventanas>>. Hay docenas de gestores de ventanas disponibles
   para X: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm,
   Window Maker, etc. Cada uno de estos gestores de ventanas tiene un aspecto
   diferente; algunos soportan <<escritorios virtuales>>; otros permiten
   personalizar las teclas para manejar el escritorio; otros tienen un boton
   de <<Inicio>> o algo similar; otros tienen <<disenos modificables>>,
   permitiendo un cambio completo del aspecto mediante un nuevo diseno. Estos
   gestores de ventanas, y muchos otros, estan en la categoria x11-wm de los
   ports.

   Ademas, los entornos de escritorio KDE y GNOME tienen sus propios gestores
   de ventanas integrados con el escritorio.

   Cada gestor de ventanas tiene diferentes mecanismos de configuracion; en
   algunos debe escribir el fichero de configuracion a mano, otros tienen
   herramientas graficas para la mayor parte de la configuracion; y al menos
   uno (Sawfish) tiene un fichero de configuracion escrito en un dialecto del
   lenguaje Lisp.

  Politica de foco:

   Otra responsabilidad del gestor de ventanas es la <<politica de foco>> del
   raton. Todos los sistemas de ventanas necesitan algo para elegir una
   ventana activa que recibira los eventos y tambien debieran indicar
   claramente que ventana esta activa.

   Una politica muy popular es la de <<click to focus>>. Este es el modelo
   que utiliza Microsoft(R) Windows(R), en el que una ventana se convierte en
   activa al recibir un clic del raton.

   X no tiene ninguna politica de foco. En lugar de eso el gestor de ventanas
   controla que ventana tiene el foco en todo momento. Los diferentes
   gestores de ventanas tienen diferentes politicas de foco. Todos soportan
   la politica <<clic-para-foco>> y la mayoria de ellos tambien soportan
   otros metodos.

   Las politicas de foco mas populares son:

   el-foco-sigue-al-raton (focus-follows-mouse)

           La ventana que esta bajo el puntero del raton es la ventana que
           tiene el foco. No es necesario que la ventana este encima de las
           demas ventanas. El foco se cambia al apuntar a otra ventana,
           aunque no es necesario hacer clic en ella.

   foco-descuidado sloppy-focus

           Esta politica es una pequena extension de
           <<el-foco-sigue-al-raton>>. En <<el-foco-sigue-al-raton>> si el
           raton se mueve sobre la ventana raiz (o fondo) ninguna ventana
           tiene el foco y las pulsaciones del teclado se perderan. Con la
           politica <<foco-descuidado>> el foco solo cambia cuando el cursor
           entra en una nueva ventana y no cuando sale de la ventana actual.

   click-para-foco click-to-focus

           La ventana activa se selecciona con un clic del raton. La ventana
           se puede <<levantar>> y aparecer delante de las demas ventanas.
           Todas las pulsaciones de teclado seran redirigidas a esa ventana
           aunque el cursor se mueva a otra ventana.

   Muchos gestores de ventanas soportan otras politicas o variaciones de
   estas. Consulte la documentacion del propio gestor de ventanas.

  5.2.4. Widgets

   La idea de X de hacer herramientas en vez de normas y se extiende a los
   <<widgets>> que se ven en la pantalla de cada aplicacion.

   <<Widget>> es un termino que abarca todos los objetos en el interfaz de
   usuario que pueden pulsarse con el raton manipularse de alguna manera:
   botones, <<check boxes>>, listas, etc. Microsoft(R) Windows(R) los llama
   <<controles>>.

   Microsoft(R) Windows(R) y Mac OS(R) de Apple tienen una politica de
   <<widgets>> muy rigida. Se supone que los desarrolladores de aplicaciones
   comparten el aspecto. En X no se considero imponer un estilo grafico o un
   conjunto de <<widgets>> al que adherirse.

   Como resultado no se puede esperar que las aplicaciones de X tengan un
   aspecto homogeneo. Hay varios conjuntos de <<widgets>> y variaciones muy
   populares como el <<widget>> Athena creado en el MIT, Motif(R) (donde los
   <<widgets>> de Microsoft(R) Windows(R) fueron modelados, con todos los
   bordes biselados y tres tonos de gris), OpenLook, y otros.

   Las aplicaciones mas modernas de X usan un conjunto de <<widgets>> con
   mejor aspecto, o Qt, utilizado por KDE, o GTK+, que usa el proyecto GNOME.
   Se intenta que el aspecto del escritorio de UNIX(R) sea parecido, lo que
   hace la vida mas facil al usuario novato.

5.3. Instalar X11

   Xorg es la implementacion de X11 por omision en FreeBSD. Xorg esta basado
   en codigo de XFree86(TM) 4.4RC2 y X11R6.6. La version de Xorg que se
   distribuye actualmente en la Coleccion de Ports de FreeBSD es la 7.7.

   Para compilar e instalar Xorg desde la coleccion de ports:

 # cd /usr/ports/x11/xorg
 # make install clean

  Nota:

   Si quiere compilar e instalar Xorg entero, asegurese de tener como minimo
   2GB de espacio disponible.

   Si lo prefiere puede instalar Xorg con packages. Cuando utilice la
   capacidad de pkg_add(1) para instalar packages que descargue remotamente
   recuerde que no debe escribir el numero de version. pkg_add(1) descargara
   automaticamente la ultima version de la aplicacion..

   Veamos que es lo que hay que hacer para descargar e instalar el package de
   Xorg:

 # pkg_add -r xorg

  Nota:

   El anterior ejemplo instala la distribucion X11 completa, es decir,
   servidores, clientes, tipos de letra, etc. Hay packages y ports con cada
   uno de esos elementos por separado.

   En el resto del capitulo se explica como configurar X11 y como configurar
   un entorno de escritorio que le resulte productivo.

5.4. Configuracion de X11

   Escrito por Christopher Shumway.

  5.4.1. Antes de empezar

   Antes de configurar X11 necesitara la siguiente informacion sobre el
   sistema:

     * Especificaciones del monitor

     * Chipset de la tarjeta de video

     * Memoria de la tarjeta de video

   X11 usa las especificaciones del monitor para determinar la resolucion y
   la frecuencia de refresco a la que funcionara. Estas especificaciones se
   pueden encontrar normalmente en la documentacion que viene con el monitor
   o en la web del fabricante. Se necesitan dos rangos de numeros: la
   frecuencia de refresco horizontal y la vertical.

   El chipset de la tarjeta de video define que controlador utilizara X11
   para comunicarse con el hardware grafico. Con la mayoria de chipsets es
   posible detectarlo automaticamente pero es util saberlo en caso de que la
   deteccion automatica no funcione.

   La memoria de la tarjeta grafica determina la resolucion y la profundidad
   de color a la que el sistema funcionara. Es importante saberlo para que el
   usuario conozca las limitaciones del sistema.

  5.4.2. Configurar X11

   A partir de la version 7.3 Xorg puede funcionar sin utilizar fichero de
   configuracion; basta con teclear en el prompt:

 % startx

   Si no funciona, o si la configuracion por omision no es aceptable, hay que
   configurar X11 a mano.

  Nota:

   Ciertos entornos de escritorio como GNOME, KDE o XFce tienen herramientas
   que permiten al usuario configurar facilmente parametros de la pantalla
   como la resolucion. Si la configuracion por omision no sirve y tiene idea
   de instalar un entorno de escritorio puede seguir adelante tranquilamente
   con la instalacion del entorno de escritorio y utilice la herramienta que
   el software que instale le facilite.

   La configuracion de X11 es un proceso que consta de multiples pasos. El
   primero es generar un fichero inicial de configuracion. Como superusuario
   teclee:

 # Xorg -configure

   Esto generara un fichero de configuracion bastante esquematico pero
   completo en /root llamado xorg.conf.new (si ha utilizado su(1) o ha
   entrado directamente como superusuario afectara al valor que tenga la
   variable de directorio $HOME). X11 intentara probar el hardware grafico
   del sistema y escribir un fichero de configuracion en el que registrar los
   controladores de dispositivo adecuados para hacer funcionar el harware que
   haya detectado.

   El siguiente paso es probar el fichero generado para verificar si Xorg
   puede funcionar con el hardware grafico del sistema. Para ello teclee:

 # Xorg -config xorg.conf.new

   Si aparece una rejilla negra y gris junto con el cursor del raton con
   forma de X es que la configuracion ha tenido exito. Para salir de la
   prueba pulse simultaneamente Ctrl+Alt+Retroceso.

  Nota:

   Si el raton no funciona tendra que configurarlo antes de continuar.
   Consulte la Seccion 2.10.10, "Configuracion del raton" en el capitulo de
   instalacion de FreeBSD.

   Despues modifique el fichero xorg.conf.new a su gusto. Abra el fichero con
   un editor de texto (como emacs(1) o ee(1)). Primero anada las frecuencias
   del monitor. Estas suelen estar expresadas en frecuencia de refresco
   horizontal y vertical. Estos valores se anaden al fichero xorg.conf.new en
   la seccion "Monitor":

 Section "Monitor"
         Identifier   "Monitor0"
         VendorName   "Monitor Vendor"
         ModelName    "Monitor Model"
         HorizSync    30-107
         VertRefresh  48-120
 EndSection

   Las palabras HorizSync y VertRefresh podrian no existir en el fichero de
   configuracion. Si no existen es necesario anadirlas con la frecuencia
   horizontal correcta puesta despues de la palabra HorizSync y la frecuencia
   vertical correcta despues de la palabra VertRefresh. En el ejemplo
   anterior se pusieron las frecuencias del monitor.

   X permite usar las caracteristicas DPMS (Energy Star) con los monitores
   que lo soportan. El programa xset(1) controla el <<timeout>>, y puede
   forzar los modos <<standby>>, suspendido o apagado. Si desea habilitar las
   caracteristicas DPMS para su monitor tendra que anadir la siguiente linea
   en la seccion monitor:

         Option       "DPMS"

   Agrege a su xorg.conf.new la resolucion por omision y la profundidad de
   color deseada. Esto se define en la seccion "Screen":

 Section "Screen"
         Identifier "Screen0"
         Device     "Card0"
         Monitor    "Monitor0"
         DefaultDepth 24
         SubSection "Display"
                 Viewport  0 0
                 Depth     24
                 Modes     "1024x768"
         EndSubSection
 EndSection

   La palabra DefaultDepth describe la profundidad de color a la que
   arrancara por omision. Esto puede sobrescribirse con el argumento -bpp de
   Xorg(1) (o XFree86(1)). La palabra Modes describe la resolucion a la que
   funcionara para esa profundidad de color. Observe que solo los modos
   estandar VESA estan soportados por el hardware grafico. En el ejemplo
   anterior la profundidad de color es 24 bits por pixel. En esta profundidad
   de color la resolucion aceptada es 1024 por 768 pixels.

   Para acabar guarde el fichero de configuracion y pruebelo usando el modo
   de prueba descrito anteriormente

  Nota:

   Una de las herramientas disponibles para ayudarle con el proceso de
   solucion de problemas es el fichero de <<logs>>, que contiene informacion
   de cada dispositivo al que el servidor X11 se conecta. Los <<logs>> (o
   bitacoras) de Xorg se pueden encontrar en /var/log/Xorg.0.log El nombre
   exacto del fichero de <<log>> puede variar entre Xorg.0.log y Xorg.8.log y
   asi sucesivamente.

   Si todo ha ido bien ha llegado el momento de ubicar el fichero de
   configuracion donde Xorg(1) pueda encontrarlo. Puede dejarlo en
   /etc/X11/xorg.conf o /usr/local/etc/X11/xorg.conf.

 # cp xorg.conf.new /etc/X11/xorg.conf

   El proceso de configuracion de X11 ha concluido. Arranque Xorg mediante
   startx(1). Puede tambien arrancar el servidor X11 utilizando xdm(1).

  Nota:

   Existe tambien una herramienta grafica de configuracion en X11,
   xorgcfg(1). Permite definir de forma interactiva su configuracio mediante
   la eleccion de los controladores y las opciones adecuadas. Este programa
   tambien puede usarse desde consola mediante la orden xorgcfg -textmode.
   Para mas informacion consulte la pagina de manual de xorgcfg(1).

   Puede usar tambien xorgconfig(1). Este programa es una herramienta
   orientada a consola que es bastante menos atractiva para el usuario, pero
   que puede funcionar en situaciones en las que otras herramientas no
   sirven.

  5.4.3. Configuracion avanzada

    5.4.3.1. Configuracion de chipsets graficos Intel(R) i810

   Para configurar los chipsets integrados Intel(R) i810 es necesario el
   interfaz de programacion AGP agpart para que X11 pueda usarla. Consulte la
   pagina de manual de agp(4) para mas informacion.

   Hecho esto podra configurar el hardware como cualquier otra tarjeta
   grafica. Tenga en cuenta que si en un sistema que no tenga el controlador
   agp(4) intenta cargar el modulo del kernel con kldload(8) no va a
   funcionar. El controlador tiene necesariamente que estar en el kernel
   desde el mismo momento del arranque, cosa que puede obtenerse bien
   compilando un nuevo kernel, bien utilizando /boot/loader.conf.

    5.4.3.2. Anadir una pantalla panoramica a nuestro sistema

   A lo largo de esta seccion se asumen unos minimos de soltura con ciertos
   aspectos de configuracion avanzada. Si Si las herramientas estandar de
   configuracion que se han descrito previamente no le ayudan a tener una
   configuracion funcional busque en los ficheros de log, ahi encontrara
   informacion suficiente para lograrlo. Tendra que utilizar un editor de
   texto a lo largo de estas instrucciones.

   Los formatos actuales de pantalla panoramica, (tambien conocidas como
   <<Widescreen>>, WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, etc, soportan formatos
   de 16:10 y 10:9 o aspectos-tasa que pueden ser problematicos. Veamos
   algunos ejemplos de resoluciones de pantalla en formatos 16:10:

     * 2560x1600

     * 1920x1200

     * 1680x1050

     * 1440x900

     * 1280x800

   At some point, it will be as easy as adding one of these resolutions as a
   possible Mode in the Section "Screen" as such:

 Section "Screen"
 Identifier "Screen0"
 Device     "Card0"
 Monitor    "Monitor0"
 DefaultDepth 24
 SubSection "Display"
         Viewport  0 0
         Depth     24
         Modes     "1680x1050"
 EndSubSection
 EndSection

   Xorg se basta y se sobra para recabar la informacion de resolucion de su
   pantalla panoramica mediante la informacion I2C/DDC, asi que sabe que
   frecuencias y resoluciones puede manejar el monitor.

   Si esas ModeLines no existen en los controladores tendra usted que ayudar
   un poco a Xorg. Lea atentamente el contenido de /var/log/Xorg.0.log; de el
   podra extraer suficiente informacion como para crear un ModeLine que
   funcione. Todo lo que tiene que hacer es buscar informacion que se parezca
   a esta:

 (II) MGA(0): Supported additional Video Mode:
 (II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
 (II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
 (II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
 (II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz

   Esta informacion se llama informacion EDID. Para crear una ModeLine a
   partir de estos datos solamente tiene que poner los numeros en el orden
   correcto:

 ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>

   Asi que la ModeLine en la Section "Monitor" del ejemplo tendria este
   aspecto:

 Section "Monitor"
 Identifier      "Monitor1"
 VendorName      "Bigname"
 ModelName       "BestModel"
 ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
 Option          "DPMS"
 EndSection

   Como ve, con un poco de edicion hemos culminado la tarea y X deberia ya
   poder arrancar sin problemas en su nuevo monitor panoramico.

5.5. Uso de tipos en X11

   Escrito por Murray Stokely.

  5.5.1. Tipos Type1

   Los tipos que X11 incluye por omision no son precisamente ideales para las
   aplicaciones tipicas. Los tipos grandes para presentaciones aparecen
   dentados y con un aspecto poco profesional, mientras que los tipos
   pequenos en Netscape(R) son practicamente ilegibles. Sin embargo hay
   varios tipos de letra libres Type1 de alta calidad (PostScript(R)) que se
   pueden usar con X11. Por ejemplo los tipos URW (x11-fonts/urwfonts)
   incluyen una version de alta calidad de los tipos estandar Type 1 (Times
   Roman(R), (Helvetica(R), (Palatino(R), y muchas otras). Las Freefonts
   (x11-fonts/freefonts ) incluyen muchas mas pero la mayoria estan pensadas
   para usarse con software grafico como el Gimp y no son lo bastante
   completos para usarse como tipos de pantalla. Ademas X11 se puede
   configurar para usar tipos TrueType(R) con un esfuerzo minimo. Para mas
   detalles sobre esto consulte la pagina del manual X(7) o la seccion de
   tipos TrueType(R).

   Para instalar los tipos Type1 desde los ports ejecute las siguientes
   ordenes:

 # cd /usr/ports/x11-fonts/urwfonts
 # make install clean

   Proceda del mismo modo con los FreeFonts o cualesquiera otras. Para que el
   servidor X las detecte anada la siguiente linea al fichero de
   configuracion de X (/etc/X11/xorg.conf:

 FontPath "/usr/X11R6/lib/X11/fonts/URW/"

   o bien desde una emulacion de terminal durante una sesion X ejecute

 % xset fp+ /usr/X11R6/lib/X11/fonts/URW
 % xset fp rehash

   Esto funcionara hasta que la sesion X se cierre a menos que lo anada a su
   fichero de inicio (~/.xinitrc en el caso de una sesion startx normal o
   ~/.xsession si hace login desde un gestor grafico como XDM). Una tercera
   forma seria usando el nuevo fichero /usr/X11R6/etc/fonts/local.conf:
   consulte la seccion de anti-aliasing.

  5.5.2. Tipos TrueType(R)

   Xorg se diseno pensando en que utilizara tipos TrueType(R). Hay dos
   modulos diferentes que pueden habilitar esta opcion. El modulo freetype se
   usa en en este ejemplo porque es mas consistente con el resto de
   <<back-ends>> de representacion. Para habilitar el modulo freetype debe
   anadir la siguiente linea a la seccion "Module" del fichero
   /etc/X11/xorg.conf.

 Load "freetype"

   Ahora haga un directorio para los tipos TrueType(R) (por ejemplo
   /usr/X11R6/lib/X11/fonts/TrueType) y copie todos los tipos TrueType(R) en
   este directorio. Recuerde que los tipos TrueType(R) no se pueden coger
   directamente de un Macintosh(R); tienen que estar en formato
   UNIX(R)/MS-DOS(R)/Windows(R) para usarlas con X11. Una vez que los
   ficheros se hayan copiado en este directorio use ttmkfdir para crear un
   fichero fonts.dir, para que el representador de tipos de X sepa que se han
   instalado estos ficheros nuevos. ttmkfdir forma parte de la Coleccion de
   Ports de FreeBSD: x11-fonts/ttmkfdir.

 # cd /usr/local/lib/X11/fonts/TrueType
 # ttmkfdir -o fonts.dir

   Ahora anada el directorio TrueType(R) a la ruta de tipos. Esto es igual
   que lo anteriormente descrito sobre los tipos Type1. Ejecute:

 % xset fp+ /usr/local/lib/X11/fonts/TrueType
 % xset fp rehash

   o anada una linea FontPath en su /etc/X11/xorg.conf.

   Esto es todo. Ahora Netscape(R), Gimp, StarOffice(TM) y el resto de
   aplicaciones X debieran reconocer los tipos TrueType(R) instalados. Los
   tipos muy pequenos (como el texto en una pantalla con alta resolucion
   viendo una pagina web) y los tipos muy grandes (Dentro de StarOffice(TM))
   se veran muchisimo mejor ahora.

  5.5.3. Tipos Anti-Aliasing

   Actualizado por Joe Marcus Clarke.

   Los <<tipos anti-aliasing>> han estado en X11 desde XFree86(TM) 4.0.2.
   Aunque la configuracion de los tipos era incomoda antes de XFree86(TM)
   4.3.0. A partir de XFree86(TM) 4.3.0 todos los tipos de X11 que se
   encuentren en /usr/local/lib/X11/fonts/ y ~/.fonts/ estan disponibles
   automaticamente para aplicaciones que soporten Xft. No todas las
   aplicaciones soportan Xft pero muchas ya tienen soporte Xft. Ejemplos de
   aplicaciones que lo soportan son Qt 2.3 o superior (el <<toolkit>> del
   escritorio KDE), GTK+ 2.0 o superior (el <<toolkit>> del escritorio GNOME
   ) y Mozilla 1.2 o superior.

   Para controlar que tipos <<anti-aliasing>> o configurar las propiedades
   <<anti-aliasing>> cree (o edite, si ya existe) el fichero
   /usr/local/etc/fonts/local.conf. Se pueden modificar diversas opciones
   avanzadas del sistema de tipos Xft usando este fichero; esta seccion
   describe solo algunas posibilidades simples. Para mas detalles consulte
   fonts-conf(5).

   Este fichero tiene que estar en formato XML. Preste especial atencion a
   las mayusculas y minusculas y asegurese de que las etiquetas estan
   cerradas correctamente. El fichero empieza con la tipica cabecera XML
   seguida de una definicion DOCTYPE y despues la etiqueta <fontconfig>:

         <?xml version="1.0"?>
         <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
         <fontconfig>
      

   Como se ha dicho antes todos los tipos en /usr/local/lib/X11/fonts/ y en
   ~/.fonts/ estan ya disponibles para las aplicaciones que soporten Xft. Si
   usted desea anadir otro directorio ademas de estos dos arboles de
   directorios anada una linea similar a esta en el fichero
   /usr/local/etc/fonts/local.conf:

 <dir>/ruta/de/mis/tipos</dir>

   Despues de anadir los nuevos tipos, y en especial los nuevos directorios
   de tipos, debe ejecutar la siguiente orden para reconstruir la cache de
   tipos:

 # fc-cache -f

   Los <<tipos anti-aliasing>> hacen los bordes ligeramente borrosos, lo que
   hace que el texto muy pequeno sea mas legible y elimina los escalones del
   texto grande pero puede causar fatiga visual aplicada al texto normal.
   Para excluir los tipos de menos de 14 puntos del <<anti-aliasing>> incluya
   las siguientes lineas:

         <match target="font">
             <test name="size" compare="less">
                 <double>14</double>
             </test>
             <edit name="antialias" mode="assign">
                 <bool>false</bool>
             </edit>
         </match>
         <match target="font">
             <test name="pixelsize" compare="less" qual="any">
                 <double>14</double>
             </test>
             <edit mode="assign" name="antialias">
                 <bool>false</bool>
             </edit>
         </match>

   El espacio entre algunos tipos tambien podria ser inapropiado con
   <<anti-aliasing>>, por ejemplo en el caso de KDE. Una posible solucion
   para esto es forzar que el espacio entre los tipos sea 100. Anada las
   siguientes lineas:

        <match target="pattern" name="family">
              <test qual="any" name="family">
                  <string>fixed</string>
              </test>
              <edit name="family" mode="assign">
                  <string>mono</string>
              </edit>
           </match>
           <match target="pattern" name="family">
               <test qual="any" name="family">
                   <string>console</string>
               </test>
               <edit name="family" mode="assign">
                   <string>mono</string>
               </edit>
           </match>

   (Esto selecciona los otros nombres comunes para <<tipos fixed>> como
   "mono"); anada tambien lo siguiente:

          <match target="pattern" name="family">
              <test qual="any" name="family">
                  <string>mono</string>
              </test>
              <edit name="spacing" mode="assign">
                  <int>100</int>
              </edit>
          </match>     

   Algunos tipos, como Helvetica, podrian tener problemas con
   <<anti-aliasing>>. Normalmente esto se manifiesta en tipos que parecen
   cortados verticalmente por la mitad. En el peor de los casos podria causar
   que el funcionamiento de aplicaciones como Mozilla se interrumpiese. Para
   evitar esto puede anadir lo siguiente a local.conf:

          <match target="pattern" name="family">
              <test qual="any" name="family">
                  <string>Helvetica</string>
              </test>
              <edit name="family" mode="assign">
                  <string>sans-serif</string>
              </edit>
          </match>       

   Una vez que haya terminado de editar local.conf asegurese de que el
   fichero termina con la etiqueta </fontconfig>. Si no lo hace los cambios
   que haya hecho seran ignorados.

   Los tipos por omision que vienen con X11 no son los ideales para
   <<anti-aliasing>>. Puede encontrar otros mucho mejores en el port
   x11-fonts/bitstream-vera. Este port instalara el fichero
   /usr/local/etc/fonts/local.conf si aun no se ha creado. Si el fichero
   existe el port creara el fichero /usr/local/etc/fonts/local.conf-vera.
   Combine el contenido de este fichero con /usr/local/etc/fonts/local.conf y
   los tipos Bitstream reemplazaran automaticamente los tipos por defecto por
   X11 Serif, Sans Serif y Monospaced.

   Por si esto fuera poco los usuarios pueden anadir sus propios ajustes
   mediante sus ficheros personales .fonts.conf. Los usuarios que deseen
   hacerlo deberan crear un fichero ~/.fonts.conf. Este fichero tiene que
   estar tambien en formato XML.

   Un ultimo punto: con pantallas LCD seria deseable un muestreo de subpixel,
   que consiste en configurar los componentes (separados horizontalmente)
   rojo, verde y azul para mejorar la resolucion horizontal; los resultados
   pueden ser impresionantes. Para habilitarlo anada la siguiente linea a
   local.conf:

         <match target="font">
             <test qual="all" name="rgba">
                 <const>unknown</const>
             </test>
             <edit name="rgba" mode="assign">
                 <const>rgb</const>
             </edit>
         </match>
      

  Nota:

   Dependiendo del tipo de pantalla rgb podria ser bgr o vrgb o vbgr:
   experimente y elija cual de ellos funciona mejor.

   Una vez concluido el proceso <<anti-aliasing>> se deberia activar la
   proxima vez que arranque X, aunque los programas necesitan saber como
   utilizarlo. En este momento el <<toolkit>> Qt es capaz de hacerlo, asi que
   KDE entero puede usar <<tipos anti-aliasing>>. GTK+ y GNOME tambien pueden
   usar <<tipos anti-aliasing>> mediante el <<applet>> <<Font>> (consulte
   Seccion 5.7.1.3, "Tipos <<Anti-aliased>> en GNOME" para mas detalle). Por
   omision Mozilla 1.2 y versiones siguientes usaran automaticamente <<tipos
   anti-aliasing>>. Para deshabilitarlos recompile Mozilla usando el
   parametro -DWITHOUT_XFT.

5.6. El gestor de pantalla X

   Escrito por Seth Kingsley.

  5.6.1. Descripcion

   El gestor de pantalla X (XDM) es una parte opcional del sistema X Window
   que se usa para la gestion de sesiones. Esto es util en diferentes
   situaciones, como <<Terminales X>> con escritorios minimos y grandes
   servidores de red. Como X Window System es independiente del protocolo y
   de la red hay muchas configuraciones posibles para ejecutar clientes y
   servidores X en diferentes equipos conectados a una red. XDM dispone de un
   interfaz grafico para elegir a que pantalla se quiere conectar y pedir la
   informacion de autentificacion como el nombre de usuario y le contrasena.

   XDM ac6tua como proveedor de la misma funcionalidad que getty(8) (consulte
   Seccion 24.3.2, "Configuracion" para mas detalles). Esto quiere decir que
   se encarga de las entradas al sistema en la pantalla a la que esta
   conectado y arranca el gestor de sesiones para que lo utilice el usuario
   (normalmente un gestor de ventanas X). XDM espera a que el programa
   termine, envia la senal de que el usuario ha terminado y que se le deberia
   desconectar de la pantalla. En este punto XDM puede mostrar las pantallas
   de entrada al sistema y de seleccion de pantalla para que el siguiente
   usuario intente acceder al sistema.

  5.6.2. Uso de XDM

   El daemon XDM esta en /usr/local/bin/xdm. Este programa se puede arrancar
   en cualquier momento como root y empezara a gestionar la pantalla X en la
   maquina local. Si se quiere que XDM arranque cada vez que la maquina se
   encienda puede hacerlo anadiendo una entrada a /etc/ttys. Para mas
   informacion sobre el formato y uso de este fichero consulte la
   Seccion 24.3.2.1, "Agregando una entrada a /etc/ttys". Por omision hay una
   linea en /etc/ttys que permite arrancar el daemon XDM en una terminal
   virtual:

 ttyv8   "/usr/local/bin/xdm -nodaemon"  xterm   off secure

   Por omision esta entrada esta deshabilitada; para habilitarla cambie el
   campo 5 de off a on y reinicie init(8) usando los pasos descritos en la
   Seccion 24.3.2.2, "Forzar init a que relea /etc/ttys". El primer campo es
   el nombre de la terminal que que gestiona el programa, ttyv8. Es decir,
   XDM empezara a ejecutarse en la terminal virtual numero 9.

  5.6.3. Configuracion de XDM

   El directorio de configuracion de XDM esta en /usr/local/lib/X11/xdm. En
   este directorio hay varios ficheros que se usan para intervenir en el
   comportamiento y la apariencia de XDM. Normalmente tendra estos ficheros:

    Fichero                             Descripcion                           
   Xaccess    Reglas de acceso para clientes.                                 
   Xresources Recursos de X por omision.                                      
   Xservers   Lista de pantallas locales y remotas a gestionar.               
   Xsession   <<script>> por omision para el acceso al sistema.               
   Xsetup_*   <<script>> para lanzar aplicaciones antes del acceso al         
              sistema.                                                        
   xdm-config Configuracion de todas las pantallas de este equipo.            
   xdm-errors Errores generados por el programa servidor.                     
   xdm-pid    El ID de proceso del XDM que esta funcionando.                  

   En este directorio tambien hay unos cuantos programas y <<scripts>> que se
   usan para arrancar el escritorio cuando XDM se esta ejecutando. El
   objetivo de cada uno de estos ficheros sera descrito brevemente. La
   sintaxis exacta y el uso de todos estos ficheros se describe en xdm(1).

   La configuracion por omision es una simple ventana rectangular de acceso
   al sistema con el nombre de la maquina en la parte superior en un tipo de
   letra grande y unos campos para que introduzca<<Login:>> y <<Password:>>
   debajo. Este es un buen punto de partida para aprender a cambiar el
   aspecto de las pantallas de XDM.

    5.6.3.1. Xaccess

   El protocolo para conectar con las pantallas controladas por XDM se llama
   <<X Display Manager Connection Protocol>> (XDMCP). Este fichero es un
   conjunto de reglas para controlar las conexiones XDMCP desde otros
   equipos. Por defecto permite a cualquier cliente conectar, pero eso no
   importa a menos que xdm-config se cambie para escuchar conexiones remotas.
   La configuracion basica no permite conexiones desde ningun cliente.

    5.6.3.2. Xresources

   Este es el fichero de opciones por defecto para el selector de pantalla y
   acceso al sistema. Aqui es donde se puede modificar la apariencia del
   programa de <<login>>. El formato es identico al fichero de opciones por
   defecto descrito en la documentacion de X11.

    5.6.3.3. Xservers

   Una lista de pantallas remotas entre las que elegir.

    5.6.3.4. Xsession

   Este es el <<script>> de sesion que por defecto XDM arrancara despues de
   que el usuario acceda al sistema. Normalmente cada usuario tendra una
   version personalizada del <<script>> de sesion en ~/.xsession que
   sobreescribe el <<script>> por defecto.

    5.6.3.5. Xsetup_*

   Estos se arrancaran automaticamente antes de que se muestre el interfaz de
   seleccion o de acceso al sistema. Hay un <<script>> por cada gestor de
   ventanas disponible llamados Xsetup_ seguido por el numero de pantalla
   local (por ejemplo Xsetup_0). Normalmente estos <<scripts>> arrancan uno o
   dos programas en segundo plano, por ejemplo xconsole.

    5.6.3.6. xdm-config

   Este fichero contiene las opciones por defecto aplicables a todas las
   pantallas que gestiona la instalacion.

    5.6.3.7. xdm-errors

   Este fichero contiene la salida de los servidores X que XDM intente
   arrancar. Si alguna pantalla que XDM intente arrancar se cuelga por alguna
   razon este es un buen sitio para buscar los mensajes de error. Estos
   mensajes tambien se escriben en el fichero ~/.xsession-errors del usuario
   en cada sesion.

  5.6.4. Ejecutar un servidor de pantalla a traves de la red

   Para que otros clientes puedan conectar al servidor de pantalla edite las
   reglas de acceso y habilite la escucha en la conexion. Por omision se
   aplican restricciones. Si quiere que XDM escuche conexiones comente la
   siguiente linea en el fichero xdm-config:

 ! SECURITY: do not listen for XDMCP or Chooser requests
 ! Comment out this line if you want to manage X terminals with xdm
 DisplayManager.requestPort:     0

   y despues reinicie XDM. Recuerde que los comentarios en los ficheros de
   opciones por defecto comienzan con el caracter<<!>> en vez del tipico
   <<#>>. Puede aplicar controles mas restrictivos. Consulte las opciones de
   ejemplo en Xaccess y la pagina de manual de xdm(1).

  5.6.5. Alternativas a XDM

   Hay algunas alternativas al programa por defecto XDM. Una de ellas, kdm
   (que se incluye con KDE) se describe mas adelante en este capitulo. kdm
   ofrece muchas ventajas visuales y funcionalidad para permitir a los
   usuarios elegir su gestor de ventanas en el momento del acceso al sistema.

5.7. Entornos de escritorio

   Escrito por Valentino Vaschetto.

   Esta seccion describe los diferentes entornos de escritorio disponibles
   para X en FreeBSD. Un <<entorno de escritorio>> puede ser cualquier cosa
   que vaya desde un simple gestor de ventanas hasta una completa <<suite>>
   de aplicaciones de escritorio como KDE o GNOME.

  5.7.1. GNOME

    5.7.1.1. Acerca de GNOME

   GNOME es un entorno de escritorio amigable que permite a los usuarios una
   configuracion facil de sus sistemas. GNOME incluye un panel (para iniciar
   las aplicaciones y mostrar su estado), un escritorio (donde pueden
   colocarse los datos y las aplicaciones), un conjunto de herramientas y
   aplicaciones de escritorio estandar y un conjunto de convenciones para
   facilitar la creacion de aplicaciones que sean consistentes y colaboren
   unas con otras. Los usuarios de otros sistemas operativos o entornos
   pueden sentirse como en casa utilizando el poderoso entorno grafico GNOME.
   Encontrara mas informacion sobre GNOME en FreeBSD en la pagina del
   Proyecto FreeBSD GNOME.

    5.7.1.2. Instacion de GNOME

   GNOME puede instalarse facilmente utilizando packages precompilados o
   desde la Coleccion de Ports:

   Para instalar el paquete de GNOME desde la red, simplemente teclee:

 # pkg_add -r gnome2

   Para compilar GNOME a partir del codigo fuente, es decir, como port:

 # cd /usr/ports/x11/gnome2
 # make install clean

   Una vez GNOME este instalado debe indicarle al servidor X como iniciar
   GNOME para convertirlo en el gestor de ventanas predeterminado.

   La manera mas facil de arrancar GNOME es con GDM, el gestor de pantalla de
   GNOME. GDM, que se instala con el escritorio GNOME al ser parte del mismo
   (aunque venga desactivado por omision) se activa anadiendo
   gdm_enable="YES" a /etc/rc.conf. Tras reiniciar, GNOME arrancara
   automaticamente al acceder al sistema; no es necesario configurar nada
   mas.

   Puede arrancar GNOME tambien desde la linea de ordenes configurando
   adecuadamente un fichero llamado .xinitrc. Si ya tiene un .xinitrc
   personalizado tendra que reemplazar la linea que arranca el gestor de
   ventanas anterior por otra que contenga /usr/local/bin/gnome-session. Si
   no ha modificado el fichero previamente basta con que teclee lo siguiente:

 % echo "/usr/local/bin/gnome-session" > ~/.xinitrc

   Despues teclee startx y deberia iniciarse el entorno de escritorio GNOME.

  Nota:

   Si utiliza un gestor de pantalla antiguo, como XDM, lo anteriormente
   descrito no funcionara. Cree un fichero ejecutable .xsession con la misma
   orden en el. Edite el fichero y sustituya la orden para iniciar su actual
   gestor de ventanas por /usr/local/bin/gnome-session:

 % echo "#!/bin/sh" > ~/.xsession
 % echo "/usr/local/bin/gnome-session" >> ~/.xsession
 % chmod +x ~/.xsession

   Otra opcion es configurar el gestor de pantalla para que permita
   seleccionar el gestor de ventanas durante el acceso; la seccion de
   detalles de KDE explica como hacerlo para kdm, el gestor de pantalla de
   KDE.

    5.7.1.3. Tipos <<Anti-aliased>> en GNOME

   X11 soporta <<anti-aliasing>> a traves de la extension <<RENDER>>. Gtk+
   2.0 y superiores (el <<toolkit>> utilizado por GNOME) disponen de esta
   funcionalidad. La configuracion del <<anti-aliasing>> se describe en la
   Seccion 5.5.3, "Tipos Anti-Aliasing". Una vez configurado el software es
   posible utilizar <<anti-aliasing>> en el entorno de escritorio GNOME.
   Solamente tiene que ir a Applications -> Desktop Preferences -> Font, y
   seleccione entre Best shapes, Best contrast, o Subpixel smoothing (LCDs).
   En el caso de una aplicacion Gtk+ que no forme parte del escritorio GNOME
   asigne a la variable de entorno GDK_USE_XFT un valor de 1 antes de
   arrancar el programa.

  5.7.2. KDE

    5.7.2.1. Acerca de KDE

   KDE es un entorno de escritorio contemporaneo y facil de usar. Veamos
   alguna de las cosas que KDE brinda al usuario:

     * Un bello escritorio contemporaneo.

     * Un escritorio completamente transparente en red.

     * Un sistema de ayuda integrado que facilita un acceso adecuado y
       consistente a la ayuda durante el uso del escritorio KDE y sus
       aplicaciones.

     * Un aspecto consistente de todas las aplicaciones KDE.

     * Menus y barras de herramientas estandares, teclas programables,
       esquemas de color, etc.

     * Internacionalizacion: KDE esta disponible en mas de 40 idiomas.

     * Un dialogo de configuracion del escritorio centralizado y consistente.

     * Un gran numero de utiles aplicaciones KDE.

   KDE incluye un navegador web llamado Konqueror, que es un solido
   competidor del resto de navegadores web existentes en sistemas UNIX(R).
   Puede encontrar mas informacion sobre KDE en el sitio web de KDE. Si
   quiere informacion especifica y recursos sobre KDE en FreeBSD consulte el
   sitio web del equipo de KDE en FreeBSD.

   Hay dos versiones de KDE en FreeBSD: la version 3 lleva ya bastante tiempo
   en el sistema y es muy estable en todos los sentidos. La version 4, la
   nueva generacion de KDE, tambien esta en los ports. Si quiere puede
   instalar ambas versiones simultaneamente.

    5.7.2.2. Instalacion de KDE

   Igual que sucede con GNOME o cualquier otro entorno de escritorio puede
   instalarlo como package o desde la Coleccion de Ports:

   Si quiere instalar como package KDE3 (desde la red) escriba:

 # pkg_add -r kde

   Si quiere instalar como package KDE4 (desde la red) escriba:

 # pkg_add -r kde4

   pkg_add(1) descargara automaticamente la version mas reciente de la
   aplicacion.

   Si lo que desea es compilar KDE3 desde el codigo fuente utilice el arbol
   de ports:

 # cd /usr/ports/x11/kde3
 # make install clean

   Si lo que desea es compilar KDE4 desde el codigo fuente utilice el arbol
   de ports:

 # cd /usr/ports/x11/kde4
 # make install clean

   Una vez instalado KDE debe indicarle al servidor X como iniciar la
   aplicacion para que se convierta en el gestor de ventanas por defecto.
   Edite .xinitrc:

   Para KDE3:

 % echo "exec startkde" > ~/.xinitrc

   Para KDE4:

 % echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc

   A partir de ahora cuando se llame al sistema X Window con startx el
   escritorio sera KDE.

   Si utiliza un gestor de pantalla, como por ejemplo xdm, la configuracion
   es ligeramente diferente. En vez de lo antedicho edite .xsession. Las
   instrucciones para kdm se decribiran mas adelante en este capitulo.

  5.7.3. Mas detalles sobre KDE

   Una vez KDE esta instalado en el sistema la mayoria de las cosas se pueden
   ir descubriendo utilizando las paginas de ayuda o sencillamente a golpe de
   raton en los diversos menus. Los usuarios de Windows(R) y Mac(R) se
   sentiraan como en casa.

   La mejor referencia para KDE es la documentacion <<on-line>>. KDE incluye
   su propio navegador, Konqueror, docenas de utiles aplicaciones y una
   extensa documentacion. El resto de esta seccion trata sobre cuestiones
   tecnicas que son dificiles de aprender mediante una exploracion al azar.

    5.7.3.1. El gestor de pantalla de KDE

   El administrador de un sistemas multiusuario puede querer ofrecer a sus
   usuarios una pantalla de bienvenido que se les presente al acceder al
   sistema. Tal y como se ha explicado previamente puede usar XDM. De todos
   modos KDE incluye su propia alternativa, alternative, kdm, disenado
   pensando en ser mas atractivo y tener mas opciones que ofrecer en el
   momento del acceso al sistema. Mas concretamente ofrece a los usuarios la
   posibilidad de elegir mediante un menu que entorno de escritorio (KDE,
   GNOME, o cualquier otro) quiere ejecutar el usuario una vez validado.

   Si quiere activar kdm debe modificar la entrada de ttyv8 en /etc/ttys. La
   linea debe quedar del siguiente modo:

   Si va a usar KDE3:

 ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure

   En el caso de KDE4:

 ttyv8 "/usr/local/kde4/bin/kdm -nodaemon" xterm on secure

  5.7.4. XFce

    5.7.4.1. Acerca de XFce

   XFce es un entorno de escritorio basado en el <<toolkit>> GTK utilizado
   por GNOME pero es mucho mas ligero y esta pensado para aquellos que
   quieran un escritorio sencillo, eficiente y facil de utlizar y configurar.
   Visualmente es muy parecido a CDE, que podemos encontrar en sistemas
   UNIX(R) comerciales. Alguna de las caracteresticas de XFce son:

     * Un escritorio sencillo y facil de utilizar.

     * Completamente configurable utilizando el raton, con arrastrar y
       soltar, etc.

     * Panel principal similar al de CDE, con menus, <<applets>> y accesos
       directos a las aplicaciones.

     * Gestor de ventanas integrado, gestor de ficheros, gestor de sonido,
       modulo de compatibilidad con GNOME, y muchas cosas mas.

     * Aspecto configurable (utiliza GTK).

     * Rapido, ligero y eficiente: ideal para maquinas viejas, lentas o
       maquinas con memoria limitada.

   Puede encontrar mas informacion sobre XFce en el sitio web de XFce.

    5.7.4.2. Instalar XFce

   En el momento de escribir este texto existe un paquete binario para XFce.
   Para instalarlo escriba:

 # pkg_add -r xfce4

   Tambien puede compilarlo desde el codigo gracias a la Coleccion de Ports:

 # cd /usr/ports/x11-wm/xfce4
 # make install clean

   Para indicar al servidor X que use XFce la proxima vez que arranque
   simplemente escriba lo siguiente:

 % echo "/usr/X11R6/bin/startxfce4" > ~/.xinitrc

   La proxima vez que arranque X XFce sera el escritorio. Como antes, si se
   usa un gestor de pantalla como xdm cree un .xsession tal y como se ha
   descrito en la anterior seccion en GNOME, pero con la orden
   /usr/local/bin/startxfce4; puede configurar el gestor de pantalla para
   permitir elegir el escritorio en el momento de acceder al sistema tal y
   como se ha explicado en la seccion de kdm.

                            Parte II. Tareas comunes

   Una vez tratados los aspectos mas basicos, pasaremos a detallar alguna de
   las caracteristicas mas utilizadas de FreeBSD:

     * Introduccion a algunas de las aplicaciones de escritorio mas utiles y
       extendidas: navegadores, herramientas de productividad, visores de
       documentos, etc.

     * Introduccion a algunas de las herramientas multimedia de FreeBSD.

     * Explicacion de como crear un kernel personalizado en FreeBSD, lo que
       le permitira anadir nuevas funcionalidades al sistema.

     * Descripcion en detalle del sistema de impresion, tanto en entornos de
       escritorio como en impresoras conectadas en red.

     * Como ejecutar aplicaciones de Linux(R) en FreeBSD.

   Algunos de los capitulos recomiendan lecturas de capitulos anteriores, lo
   que se indica al inicio de cada capitulo.

   Tabla de contenidos

   6. Aplicaciones de escritorio

                6.1. Sinopsis

                6.2. Navegadores

                6.3. Productividad

                6.4. Visores de documentos

                6.5. Finanzas

                6.6. Resumen

   7. Multimedia

                7.1. Sinopsis

                7.2. Configuracion de la tarjeta de sonido

                7.3. Sonido MP3

                7.4. Reproduccion de video

                7.5. Configuracion de tarjetas de TV

                7.6. Escaneres de imagenes

   8. Configuracion del kernel de FreeBSD

                8.1. Sinopsis

                8.2. ?Que razones hay para compilar un kernel personalizado?

                8.3. Inventario de hardware del sistema

                8.4. Controladores del kernel, subsistemas y modulos

                8.5. Compilacion e instalacion de un kernel personalizado

                8.6. El fichero de configuracion

                8.7. Que hacer si algo va mal

   9. Imprimir

                9.1. Sinopsis

                9.2. Introduccion

                9.3. Configuracion basica

                9.4. Configuracion avanzada de impresoras

                9.5. Como utilizar impresoras

                9.6. Alternativas a LPD

                9.7. Solucion de problemas

   10. Compatibilidad binaria con Linux

                10.1. Sinopsis

                10.2. Instalacion

                10.3. Instalacion de Mathematica(R)

                10.4. Instalacion de Maple(TM)

                10.5. Instalacion de MATLAB(R)

                10.6. Instalacion de Oracle(R)

                10.7. Instalacion de SAP(R) R/3(R)

                10.8. Temas avanzados

Capitulo 6. Aplicaciones de escritorio

   Escrito por Christophe Juniet.
   Tabla de contenidos

   6.1. Sinopsis

   6.2. Navegadores

   6.3. Productividad

   6.4. Visores de documentos

   6.5. Finanzas

   6.6. Resumen

6.1. Sinopsis

   FreeBSD puede ejecutar gran numero de aplicaciones de escritorio, como
   navegadores y procesadores de texto. La mayoria de ellas estan disponibles
   como packages o se pueden compilar automaticamente desde la coleccion de
   ports. Muchos usuarios nuevos esperan encontrar este tipo de aplicaciones
   en su escritorio. Este capitulo mostrara como instalar de forma facil
   algunas aplicaciones populares, bien como packages o desde la coleccion de
   ports.

   Tenga en cuenta que cuando se instalan programas desde los ports se
   compilan desde el codigo fuente. Esto puede tardar muchisimo tiempo,
   dependiendo de que este compilando y la potencia de proceso de su maquina.
   Si compilar una o mas aplicaciones le requiere una cantidad de tiempo
   desmesurada para sus necesidades recuerde que puede instalar la mayoria de
   programas de la Coleccion de Ports como packages precompilados.

   FreeBSD tiene compatibilidad binaria con Linux(R), asi que muchas
   aplicaciones originariamente desarrolladas para Linux existen tambien para
   su escritorio. Le recomendamos encarecidamente que lea el Capitulo 10,
   Compatibilidad binaria con Linux antes instalar aplicaciones Linux. Muchos
   de los ports que usan la compatibilidad binaria de Linux empiezan por
   <<linux->>. Recuerdelo cuando busque un port en particular, por ejemplo
   con whereis(1). En el siguiente texto se asume que ha habilitado usted la
   compatibilidad binaria de Linux antes de instalar aplicaciones de Linux.

   Estas son las categorias que cubre este capitulo:

     * Navegadores (como Mozilla, Netscape(R), Opera, Firefox, Konqueror)

     * Productividad (como KOffice, AbiWord, The GIMP, OpenOffice.org)

     * Visores de documentos (como Acrobat Reader(R), gv, Xpdf, GQview)

     * Finanzas (como GnuCash, Gnumeric, Abacus)

   Antes de leer este capitulo, usted deberia:

     * Saber como instalar software de terceros (Capitulo 4, Instalacion de
       aplicaciones: <<packages>> y ports).

     * Saber como instalar software de Linux (Capitulo 10, Compatibilidad
       binaria con Linux).

   Si quiere mas informacion sobre como conseguir un entorno un entorno
   multimedia en FreeBSD consulte el Capitulo 7, Multimedia. Si quiere
   configurar y usar el correo electronico consulte el Capitulo 27, Correo
   Electronico.

6.2. Navegadores

   FreeBSD no trae ningun navegador preinstalado, pero en el directorio www
   de la coleccion de ports tiene muchos navegadores listos para instalar. Si
   no tiene tiempo para compilarlo todo (esto puede requerir muchisimo tiempo
   en algunos casos) muchos de ellos estan disponibles como packages.

   KDE y GNOME ya proporcionan navegadores HTML. Consulte la Seccion 5.7,
   "Entornos de escritorio" para mas informacion sobre como configurar estos
   escritorios.

   Si busca navegadores ligeros tiene en la coleccion de ports www/dillo,
   www/links, o www/w3m.

   Esta seccion cubre estas aplicaciones:

   Nombre de   Recursos    Instalacion         Dependencias importantes       
   aplicacion necesarios desde los Ports 
   Mozilla    pesado     pesado          Gtk+                                 
                                         Versiones para FreeBSD y Linux       
   Opera      ligero     ligero          disponibles. La version de Linux     
                                         depende de la compatibiliad binaria  
                                         de Linux y de linux-openmotif.       
   Firefox    medio      pesado          Gtk+                                 
   Konqueror  medio      pesado          KDE Libreris                         

  6.2.1. Mozilla

   Mozilla es una navegador moderno y estable que dispone de soporte completo
   en FreeBSD: dispone de un motor de presentacion de HTML muy ajustado a los
   estandares, tiene cliente de correo electronico, lector de noticias e
   incluso ofrece un editor de paginas HTML por si quiere crear paginas web.
   Los usuarios de Netscape(R) encontraran semejanzas con la suite
   Communicator, dado que ambos navegadores comparten parte de la base de
   desarrollo.

   En maquinas lentas, con una CPU de velocidad inferior a 233MHz o con menos
   de 64MB de RAM, Mozilla puede consumir demasiados recursos para poder
   utilizarse. Puede usar el navegador Opera, mucho mas ligero, que se
   describe mas adelante en este mismo capitulo.

   Si no puede o no quiere compilar Mozilla por algun motivo, el equipo de
   FreeBSD GNOME ya lo ha hecho por usted. Instale el package desde la red
   del siguiente modo:

 # pkg_add -r mozilla

   Si no hay package disponible y tiene suficiente tiempo y espacio en el
   disco puede obtener el codigo de Mozilla, compilarlo e instalarlo en su
   sistema. Esto se hace con:

 # cd /usr/ports/www/mozilla
 # make install clean

   El port de Mozilla se asegura de que se inicialice adecuadamente
   ejecutando la configuracion del registro <<chrome>> con privilegios de
   root, aunque si quiere instalar algun anadido como <<mouse gestures>>
   (gestos del raton) tendra que ejecutar que correr Mozilla como root para
   que se instale correctamente.

   Una vez efectuada la instalacion de Mozilla no es necesario ser root por
   mas tiempo. Puede arrancar Mozilla como navegador escribiendo:

 % mozilla

   Puede arrancarlo directamente como lector de correo y noticias del
   siguiente modo:

 % mozilla -mail

  6.2.2. Firefox

   Firefox es un navegador de nueva generacion basado en el codigo fuente de
   Mozilla. Mozilla es una suite completa de aplicaciones en la que
   encontrara un navegador, un cliente de correo, un cliente de chat y muchas
   otras. Firefox es solamente un navegador, lo que hace que sea mucho mas
   pequeno y ligero.

   Puede instalarlo como package del siguiente modo:

 # pkg_add -r firefox

   Si prefiere compilar el codigo fuente e instalarlo desde los ports puede
   hacer esto otro:

 # cd /usr/ports/www/firefox
 # make install clean

  6.2.3. Firefox, Mozilla y el <<plugin>> Java(TM)

  Nota:

   En esta seccion y en la siguiente asumiremos que ya ha instalado Firefox o
   Mozilla.

   La FreeBSD Foundation disponde una licencia de Sun Microsystems que le
   permite distribuir binarios FreeBSD del Java Runtime Environment (JRE(TM))
   y del Java Development Kit (JDK(TM)). Puede descargar packages binarios
   para FreeBSD desde el sitio webde la FreeBSD Foundation.

   Para anadir soporte Java(TM) a Firefox o Mozilla tiene que instalar el
   port the java/javavmwrapper. Despues descargue el package Diablo JRE(TM)
   desde http://www.freebsdfoundation.org/downloads/java.shtml e instalelo
   con pkg_add(1).

   Arranque su navegador, introduzca about:plugins en la barra de navegacion
   y pulse Intro. Vera una pagina con una lista de los <<plugins>> que tenga
   instalados; el <<plugin>> Java(TM) deberia ser uno de los que aparezcan.
   Si no es asi ejecute (como root) lo siguiente

 # ln -s /usr/local/diablo-jre1.6.0/plugin/i386/ns7/libjavaplugin_oji.so \
   /usr/local/lib/browser_plugins/

   y reinicie su navegador.

  6.2.4. Opera

   Opera es un navegador muy rapido, completo y que cumple con los
   estandares. Hay dos versiones: la version <<nativa>> de FreeBSD y la
   version que se ejecuta bajo la emulacion de Linux. Para cada sistema
   operativo hay una version gratuita que muestra publicidad y otra sin
   publicidad que se puede comprar en la pagina web de Opera.

   Para navegar por la web con la version para FreeBSD de Opera tendra que
   instalar el package:

 # pkg_add -r opera

   Algunos sitios FTP no tienen todos los paquetes, pero puede instalarlo
   desde la Coleccion de Ports:

 # cd /usr/ports/www/opera
 # make install clean

   Si quiere instalar la version de Linux de Opera ponga linux-opera en lugar
   de opera en los atnteriores ejemplos. La version de Linux es util en
   situaciones donde se necesitan <<plugins>> de los que solo hay versiones
   para Linux, como Adobe Acrobat Reader(R). En todos los demas aspectos las
   versiones de FreeBSD y Linux son iguales.

  6.2.5. Konqueror

   Konqueror forma parte de KDE pero tambien se puede instalar y usar
   independienmente de KDE instalando x11/kdebase3. Konqueror es mucho mas
   que un navegador, tambien es gestor de ficheros y visor multimedia.

   Konqueror tambien trae un conjunto de <<plugins>>, disponibles en
   misc/konq-plugins.

   Konqueror tambien soporta Flash(TM), hay un tutorial en
   http://freebsd.kde.org/howto.php.

6.3. Productividad

   Cuando se trata de productividad, normalmente los nuevos usuarios piensan
   en una buena suite ofimatica o un procesador de textos amigable. Mientras
   que algunos entornos de escritorio como KDE ofrecen una suite ofimatica
   propia, no hay una aplicacion por defecto. FreeBSD permite usar todo lo
   que se necesite sin importar que entorno de escritorio use.

   Esta seccion cubre estas aplicaciones:

       Nombre de la         Recursos     Instalacion desde    Dependencias    
        aplicacion         necesarios        los ports        importantes     
   KOffice              ligero           pesado            KDE                
   AbiWord              ligero           ligero            Gtk+ o GNOME       
   The Gimp             ligero           pesado            Gtk+               
   OpenOffice.org       pesado           enorme            GCC 3.1, JDK(TM)   
                                                           1.3, Mozilla       

  6.3.1. KOffice

   La comunidad de KDE ha dotado su entorno de escritorio con una suite
   ofimatica totalmente independiente de KDE. Incluye los 4 componentes
   estandar que se pueden encontrar en otras suites ofimaticas. KWord es el
   procesador de textos, KSpread es la hoja de calculo, KPresenter se encarga
   de las presentaciones y Kontour le permite dibujar documentos graficos.

   Antes de instalar el ultimo KOffice asegurese de que tiene una version
   actualizada de KDE.

   Para instalar KOffice como un paquete ejecute la siguiente orden:

 # pkg_add -r koffice

   Si el paquete no esta disponible puede usar la coleccion de ports. Por
   ejemplo, para instalar KOffice para KDE3 haga lo siguiente:

 # cd /usr/ports/editors/koffice-kde3
 # make install clean

  6.3.2. AbiWord

   AbiWord es un procesador de textos libre con un aspecto parecido a
   Microsoft(R) Word. Es util para escribir documentos, cartas, informes,
   notas, etc. Es muy rapido, tiene muchas opciones y es muy amigable.

   AbiWord puede importar o exportar muchos formatos de fichero, incluyendo
   algunos propietarios como Microsoft .doc.

   AbiWord esta disponible como package. Si quiere instalarlo haga lo
   siguiente:

 # pkg_add -r AbiWord2

   Si el package no esta disponible por el motivo que fuere puede instalarlo
   desde la coleccion de Ports. La coleccion de ports deberia estar mas
   actualizada:

 # cd /usr/ports/editors/AbiWord2
 # make install clean

  6.3.3. The GIMP

   GIMP es un programa de manipulacion de imagenes muy sofisticado que le
   permitira tambien crearlas y retocarlas. Puede usarlo como un programa de
   dibujo sencillo o como una sofisticada herramienta de retoque fotografico.
   Admite una gran cantidad de <<plug-ins>> y tiene opciones tan interesantes
   como una interfaz para <<scripts>>. GIMP puede leer y escribir un gran
   numero de formatos de fichero. Soporta escaners y tabletas graficas.

   Instale el package mediante la siguiente orden:

 # pkg_add -r gimp

   Si su servidor FTP no tiene este package puede usar la coleccion de ports.
   El directorio graphics de la coleccion de ports tambien contiene The Gimp
   Manual. Si quiere instalarlo haga lo siguiente:

 # cd /usr/ports/graphics/gimp
 # make install clean
 # cd /usr/ports/graphics/gimp-manual-pdf
 # make install clean

  Nota:

   El directorio graphics de la coleccion de ports tiene la version de
   desarrollo de GIMP en graphics/gimp-devel. Hay una version en HTML de The
   Gimp Manual en graphics/gimp-manual-html.

  6.3.4. OpenOffice.org

   OpenOffice.org incluye todas las aplicaciones esenciales en una completa
   suite ofimatica: un procesador de textos, una hoja de calculo, un gestor
   de presentaciones y un programa de dibujo. Su interfaz de usuario es muy
   parecida a otras suites ofimaticas y puede importar y exportar diversos
   formatos muy extendidos. Esta disponible en diversos idiomas; el proceso
   de internacionalizacion incluye interfaces, correctores ortograficos y
   diccionarios.

   El procesador de textos de OpenOffice.org usa un fichero XML nativo para
   aumentar la portabilidad y la eficiencia. El programa de hojas de calculo
   tiene un lenguaje de macros y puede usarse desde bases de datos externas.
   OpenOffice.org es estable y hay versiones nativas para Windows(R),
   Solaris(TM), Linux, FreeBSD, y Mac OS(R) X. Tiene mas informacion sobre
   OpenOffice.org en la pagina web de OpenOffice. Si quiere informacion
   especifica para FreeBSD, o si quiere bajar directamente los packages use
   la pagina web de FreeBSD OpenOffice Porting Team.

   Para instalar OpenOffice.org ejecute:

 # pkg_add -r openoffice

  Nota:

   Si usa una version -RELEASE de FreeBSD todo lo antedicho funcionara. Si
   usa cualquier otra version visite el sitio web del FreeBSD OpenOffice.org
   Porting Team, desde el cual podra descargar e instalar el package mas
   adecuado e instalarlo mediante pkg_add(1). En este sitio web encontrara
   tanto una version current como la de desarrollo.

   Una vez instalado el package escriba la siguiente orden para ejecutar
   OpenOffice.org:

 % openoffice.org

  Nota:

   En el primer arranque se le haran diversas preguntas se creara un
   directorio .openoffice.org2 en su <<home>>.

   Si no hay packages de OpenOffice.org disponibles siempre tiene la opcion
   de compilar el port. Tenga muy en cuenta que necesitara gran cantidad de
   espacio en disco y que este port necesita una cantidad de tiempo
   monstruosa para efectuar la compilacion.

 # cd /usr/ports/editors/openoffice.org-2
 # make install clean

  Nota:

   Si quiere compilar una de las muchas versiones que existen en idiomas
   distintos del ingles sustituya la orden anterior por la que se muestra a
   continuacion:

 # make LOCALIZED_LANG=su_idioma install clean

   Sustituya su_idioma por el codigo ISO del idioma que quiera. Tiene una
   lista de codigos de idioma disponibles dentro del directorio del port en
   files/Makefile.localized.

   Hecho esto puede ejecutar OpenOffice.org con la orden:

 % openoffice.org

6.4. Visores de documentos

   Desde la aparicion de UNIX(R) han ido apareciendo formatos de documento de
   lo mas diverso, alguno de los cuales se ha hecho muy popular. Los visores
   de documentos estandar que requieren no tienen por que estar en el sistema
   base. En esta seccion veremos como instalar estos visores.

   Esta seccion cubre las siguientes aplicaciones:

     Nombre de la     Recursos    Instalacion     Dependencias importantes    
      aplicacion     necesarios desde los ports 
   Acrobat Reader(R) ligero     ligero          Compatibilidad binaria de     
                                                Linux                         
   gv                ligero     ligero          Xaw3d                         
   Xpdf              ligero     ligero          FreeType                      
   GQview            ligero     ligero          Gtk+ o GNOME                  

  6.4.1. Acrobat Reader(R)

   Muchos documentos se distribuyen en formato PDF, siglas de <<Portable
   Document Format>>. Uno de los visores recomendados para este tipo de
   ficheros es Acrobat Reader(R), un producto de Adobe para Linux. Dado que
   FreeBSD puede ejecutar binarios de Linux tambien existe para FreeBSD.

   Para instalar Acrobat Reader(R) 7 desde la Coleccion de Ports ejecute:

 # cd /usr/ports/print/acroread7
 # make install clean

   No hay package debido a las restricciones que impone la licencia del
   software.

  6.4.2. gv

   gv es un visor de PostScript(R) y PDF. Tiene su origen en ghostview pero
   tiene un aspecto bastante mejorado gracias a la libreria Xaw3d. Es rapido
   y tiene una interfaz limpia. gv tiene muchas opciones como orientacion,
   tamano del papel, escalado o antialias. Casi todas las operaciones se
   pueden realizar desde el teclado o desde el raton.

   Para instalar gv como package ejecute:

 # pkg_add -r gv

   Si no puede obtener el package puede usar la coleccion de ports:

 # cd /usr/ports/print/gv
 # make install clean

  6.4.3. Xpdf

   Si quiere un visor de PDF pequeno, Xpdf es un visor ligero y eficiente.
   Requiere muy pocos recursos y es muy estable. Usa los tipos estandar de X
   y no depende de Motif(R) ni de ningun otro <<toolkit>> de X.

   Para instalar el package de Xpdf use la siguiente orden:

 # pkg_add -r xpdf

   Si el paquete no esta disponible o prefiere usar la coleccion de ports
   ejecute:

 # cd /usr/ports/graphics/xpdf
 # make install clean

   Una vez que la instalacion haya concluido puede lanzar Xpdf; use el boton
   derecho del raton para activar el menu.

  6.4.4. GQview

   GQview es un visor de imagenes. Puede ver un fichero con un click, lanzar
   un editor externo, obtener imagenes de previsualizacion y muchas cosas
   mas. Tambien tiene un modo de presentacion y admite algunas opciones
   basicas de manipulacion de ficheros. Puede gestionar colecciones de
   imagenes y encontrar ficheros duplicados con facilidad. GQview puede
   mostrar las imagenes a pantalla completa y esta preparado para la
   internacionalizacion.

   Si quiere instalar el paquete de GQview ejecute:

 # pkg_add -r gqview

   Si el paquete no esta disponible o prefiere usar la coleccion de ports
   ejecute:

 # cd /usr/ports/graphics/gqview
 # make install clean

6.5. Finanzas

   Si por algun motivo quisiera gestionar sus finanzas personales en su
   escritorio FreeBSD hay algunas aplicaciones potentes y sencillas de
   utilizar que puede instalar. Algunas de ellas son compatibles con formatos
   muy extendidos como documentos de Quicken o Excel.

   Esta seccion cubre las siguientes aplicaciones:

       Nombre de         Recursos      Instalacion desde     Dependencias     
      aplicacion        necesarios         los ports          importantes     
   GnuCash           ligero           pesado              GNOME               
   Gnumeric          ligero           pesado              GNOME               
   Abacus            ligero           pesado              Tcl/Tk              
   KMyMoney          ligero           pesado              KDE                 

  6.5.1. GnuCash

   GnuCash es parte del afan de GNOME por ofrecer aplicaciones de uso
   sencillo pero a la vez potentes a los usuarios. Con GnuCash, puede
   gestionar sus ingresos y sus gastos, sus cuentas bancarias o sus acciones.
   Tiene una interfaz intuitiva pero muy profesional.

   GnuCash dispone de un registro elegante, un sistema jerarquico de cuentas,
   muchos atajos de teclado y metodos de autocompletado. Puede dividir una
   transaccion en varias partes mas detalladas. GnuCash puede importar y
   mezclar ficheros QIF de Quicken. Tambien admite muchos formatos
   internacionales de fecha y moneda.

   Para instalar GnuCash en su sistema ejecute:

 # pkg_add -r gnucash

   Si el paquete no esta disponible puede usar la coleccion de ports:

 # cd /usr/ports/finance/gnucash
 # make install clean

  6.5.2. Gnumeric

   Gnumeric es una hoja de calculo que forma parte del entorno de escritorio
   GNOME. Implementa una <<prediccion>> automatica de la entrada del usuario
   de acuerdo con el formato de celda y un sistema de completado automatico
   para multiples secuencias. Puede importar ficheros de un gran numero de
   formatos muy extendidos, como Excel, Lotus 1-2-3 o Quattro Pro. Gnumeric
   soporta graficas mediante el programa de graficas math/guppi. Tiene un
   gran n'mero de funciones internas y permite todos los formatos normales de
   celda como numero, moneda, fecha, hora y muchos mas.

   Para instalar Gnumeric como package ejecute:

 # pkg_add -r gnumeric

   Si el package no esta disponible puede usar la coleccion de ports del
   siguiente modo:

 # cd /usr/ports/math/gnumeric
 # make install clean

  6.5.3. Abacus

   Abacus es una hoja de calculo pequena y facil de usar. Tiene muchas
   funciones utiles en varios ambitos como la estadistica, las finanzas y las
   matematicas. Puede importar y exportar ficheros con formato Excel. Abacus
   puede generar ficheros PostScript(R).

   Para instalar Abacus como package ejecute:

 # pkg_add -r abacus

   Si no hay package al alcance puede usar la coleccion de ports:

 # cd /usr/ports/deskutils/abacus
 # make install clean

6.6. Resumen

   FreeBSD esta muy extendido en ISP por su alto rendimiento y estabilidad,
   pero tambien se puede usar a diario como escritorio. Hay miles de
   aplicaciones disponibles como packages o ports con las que puede crear un
   escritorio que cubra todas sus necesidades.

   Aqui hay un resumen de todas las aplicaciones cubiertas en este capitulo:

    Nombre De La Aplicacion    Nombre Del Paquete        Nombre Del Port      
   Mozilla                    mozilla               www/mozilla               
   Opera                      opera                 www/opera                 
   Firefox                    firefox               www/firefox               
   KOffice                    koffice-kde3          editors/koffice-kde3      
   AbiWord                    AbiWord2              editors/AbiWord2          
   GIMP                       gimp                  graphics/gimp             
   OpenOffice.org             openoffice            editors/openoffice-1.1    
   Acrobat Reader(R)          acroread              print/acroread7           
   gv                         gv                    print/gv                  
   Xpdf                       xpdf                  graphics/xpdf             
   GQview                     gqview                graphics/gqview           
   GnuCash                    gnucash               finance/gnucash           
   Gnumeric                   gnumeric              math/gnumeric             
   Abacus                     abacus                deskutils/abacus          
   KMyMoney                   kmymoney2             finance/kmymoney2         

Capitulo 7. Multimedia

   Editado por Ross Lippert.
   Tabla de contenidos

   7.1. Sinopsis

   7.2. Configuracion de la tarjeta de sonido

   7.3. Sonido MP3

   7.4. Reproduccion de video

   7.5. Configuracion de tarjetas de TV

   7.6. Escaneres de imagenes

7.1. Sinopsis

   FreeBSD admite una gran variedad de tarjetas de sonido, lo que permite
   disfrutar de sonido de alta fidelidad en su sistema. Esto incluye la
   posibilidad de grabar y reproducir ficheros de audio tanto en los formatos
   MPEG Audio Layer 3 (MP3), WAV y Ogg Vorbis, asi como muchos otros. La
   Coleccion de Ports de FreeBSD contiene tambien aplicaciones que le
   permitiran editar audio previamente grabado, anadir efectos y controlar
   dispositivos MIDI.

   Tras unas cuantas pruebas podra reproducir ficheros de video y DVD en
   FreeBSD. La cantidad de aplicaciones disponibles para codificar, convertir
   y reproducir los diversos soportes de video es mas limitada que lo que hay
   disponible para el sonido. Por ejemplo, en el momento de escribir este
   texto no hay en la Coleccion de Ports de FreeBSD una buena aplicacion que
   permita pasar datos de un formato a otro, el equivalente a lo que hay en
   el campo del sonido con audio/sox. A pesar de eso la situacion en este
   area esta cambiando rapidamente.

   Este capitulo muestra los pasos necesarios para configurar una tarjeta de
   sonido. La configuracion e instalacion de X11 (Capitulo 5, El sistema X
   Window) habra solucionado ya todos los problemas que hubiera podido darle
   su tarjeta grafica, aunque quizas haya algun pequeno detalle que anadir
   para mejorar la reproduccion.

   Tras leer este capitulo sabra usted:

     * Como configurar su sistema de modo que su tarjeta de sonido sea
       reconocida por el mismo.

     * Confirmar el funcionamiento de su tarjeta usando herramientas de
       muestreo.

     * Como enfrentarse a problemas de configuracion de sonido.

     * Como reproducir y crear ficheros MP3 y otros.

     * Como gestiona el video el servidor X.

     * Identificar unos cuantos ports para reproducir y codificar video que
       le daran muy buenos resultados.

     * Como reproducir DVD y ficheros .mpg y .avi.

     * Como convertir CD y DVD en ficheros de datos.

     * Como configurar una tarjeta de TV.

     * Como configurar un escaner de imagenes.

   Antes de leer este capitulo deberia:

     * Saber configurar e instalar un nuevo kernel (Capitulo 8, Configuracion
       del kernel de FreeBSD).

  Aviso:

    Si intenta montar un cd con mount(8) provocara (como minimo) un error en
   el sistema, pero puede llegar a provocar un kernel panic. Dichos soportes
   tienen codificaciones especiales sustancialmente diferentes de los tipicos
   sistemas de ficheros ISO.

7.2. Configuracion de la tarjeta de sonido

   Escrito por Moses Moore.
   Ampliado para FreeBSD 5.X por Marc Fonvieille.

  7.2.1. Configuracion del sistema

   Antes de nada tendra que saber a ciencia cierta el modelo de tarjeta que
   tiene, que chip utiliza y si es PCI o ISA. FreeBSD admite una amplia
   variedad de tarjetas, tanto PCI como ISA. Consulte la lista de
   dispositivos de sonido que puede usar en FreeBSD en las Hardware Notes.
   Las <<Hardware Notes>> le diran tambien que controlador es el que hace
   funcionar su tarjeta.

   Para poder usar su dispositivo de sonido en FreeBSD tiene que cargar el
   controlador de dispositivo adecuado, cosa que puede hacerse de dos
   maneras. La forma mas facil es cargar el modulo del kernel correspondiente
   a su tarjeta de sonido mediante kldload(8). Puede hacerlo en su shell con
   la siguiente orden

 # kldload snd_emu10k1

   o anadiendo la linea apropiada al fichero /boot/loader.conf:

 snd_emu10k1_load="YES"

   Ambos ejemplos son para una tarjeta de sonido Creative SoundBlaster(R)
   Live!. Encontrara una lista de modulos de sonido que puede cargar del
   mismo modo en /boot/defaults/loader.conf. Si no esta del todo seguro sobre
   el controlador que debe usar pruebe con el modulo snd_driver:

 # kldload snd_driver

   Se trata de un <<metacontrolador>> que carga en memoria todos los
   controladores mas habituales. De este modo acelerara notablemente el
   proceso de detectar cual es el controlador perfecto para su hardware.
   Tambien puede cargar todos los controladores de sonido desde
   /boot/loader.conf.

   Si quiere saber que controlador se corresponde con su tarjeta de sonido
   una vez cargado el <<metadriver>> snd_driver debe comprobar el contenido
   de /dev/sndstat mediante la orden cat /dev/sndstat.

   El segundo metodo es compilar de forma estatica el soporte para su tarjeta
   de sonido dentro de un kernel personalizado. En la siguiente seccion
   encontrara la informacion necesaria para anadir a su kernel el soporte que
   necesita su hardware. Para mas informacion sobre la compilacion de un
   kernel consulte el Capitulo 8, Configuracion del kernel de FreeBSD.

    7.2.1.1. Configuracion de un kernel personalizado con soporte de sonido

   Lo primero que hay que hacer es anadir el controlador del <<framework>> de
   sonido sound(4) al kernel; tendra que anadir la siguiente linea a su
   fichero de configuracion del kernel:

 device sound

   Una vez hecho esto tiene que anadir el soporte para su tarjeta de sonido.
   Evidentemente tendra que saber exactamente que controlador es el que hace
   funcionar su tarjeta. Consulte la lista de dispositivos de sonido
   soportados que encontrara en las Hardware Notes y elija el controlador
   perfecto para su tarjeta. Por ejemplo una una tarjeta de sonido Creative
   SoundBlaster(R) Live! usara el controlador snd_emu10k1(4). Siguiendo con
   el ejemplo, si queremos anadir soporte para esta tarjeta agregaremos lo
   siguiente:

 device snd_emu10k1

   Por favor, lea la pagina de manual del controlador si tiene dudas con la
   sintaxis. La sintaxis especifica para la configuracion en el kernel de
   cada tarjeta de sonido soportada existente puede encontrarse tambien en
   /usr/src/sys/conf/NOTES.

   Las tarjetas ISA no PnP pueden requerir que se le facilite al kernel la
   informacion de la configuracion de la tarjeta (IRQ, puerto de E/S, etc).
   Esto se hace modificando el fichero /boot/device.hints. Durante el proceso
   de arranque loader(8) leera este fichero y le pasara los parametros al
   kernel. Veamos un ejemplo: una vieja tarjeta Creative SoundBlaster(R) 16
   ISA no PnP utilizara el controlador snd_sbc(4) junto con snd_sb16. En el
   caso de esta tarjeta habra que anadir las siguientes lineas al fichero de
   configuracion del kernel

 device snd_sbc
 device snd_sb16

   y anadir lo siguiente a /boot/device.hints:

 hint.sbc.0.at="isa"
 hint.sbc.0.port="0x220"
 hint.sbc.0.irq="5"
 hint.sbc.0.drq="1"
 hint.sbc.0.flags="0x15"

   La tarjeta del ejemplo usa el puerto de E/S 0x220 I/O port y la IRQ 5.

   La sintaxis a utilizar en /boot/device.hints se explica en la pagina de
   manual de sound(4) y en la del controlador en cuestion.

   En el ejemplo se muestran los parametros por omision. En ciertos casos
   habra que usar otra IRQ o usar otros parametros para hacer funcionar la
   tarjeta de sonido. Consulte la pagina de manual de snd_sbc(4) para mas
   informacion sobre esta tarjeta.

  7.2.2. Como probar su tarjeta de sonido

   Una vez que haya reiniciado con su kernel personalizado, o tras cargar el
   molo del kernel necesario la tarjeta de sonido aparecera en el bufer de
   mensajes del sistema (dmesg(8)); deberi ser algo muy parecido a esto:

 pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
 pcm0: [GIANT-LOCKED]
 pcm0: <Cirrus Logic CS4205 AC97 Codec>

   Puede comprobar el estado de la tarjeta de sonido en el fichero
   /dev/sndstat:

 # cat /dev/sndstat
 FreeBSD Audio Driver (newpcm)
 Installed devices:
 pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
 kld snd_ich (1p/2r/0v channels duplex default)

   El resultado en su sistema seguramente sera distinto. Si no aparecen
   dispositivos pcm revise todo el proceso a ver donde esta el error. Revise
   su fichero de configuracion del kernel nuevamente y compruebe que eligio
   el controlador de dispositivo adecuado. Tiene una lista de problemas
   habituales en la Seccion 7.2.2.1, "Problemas habituales".

   Si todo ha ido bien ya tiene una tarjeta de sonido funcionando en su
   sistema. Si los pins de salida de sonido de su CD-ROM o DVD-ROM estan
   colocados correctamente puede poner un CD en la unidad y reproducirlo con
   cdcontrol(1).

 % cdcontrol -f /dev/acd0 play 1

   Hay muchas aplicaciones como audio/workman que le ofreceran un interfaz
   mas amigable. Si quiere escuchar ficheros MP3 puede instalar, por ejemplo,
   audio/mpg123.

   Hay otra via aun mas rapida de probar su tarjeta de sonido. Envie datos a
   to /dev/dsp del siguiente modo:

 % cat fichero > /dev/dsp

   donde fichero puede ser cualquier fichero. Esta orden producira ruido, lo
   que confirmara que la tarjeta de sonido funciona.

   Puede manejar los niveles de la tarjeta de sonido con mixer(8). Tiene
   todos los detalles en la pagina de manual de mixer(8).

    7.2.2.1. Problemas habituales

             Error                               Solution                     
   sb_dspwr(XX) timed out     El puerto de E/S no ha sido configurado         
                              correctamente.                                  
                              No ha elegido correctamente la IRQ. Asegurese   
   bad irq XX                 de que la IRQ que ha elegido y la IRQ del       
                              sonido son la misma.                            
   xxx: gus pcm not attached, No queda memoria suficiente en el sistema para  
   out of memory              poder usar el dispositivo.                      
                              Compruebe si hay otra aplicacion utilizando (y  
   xxx: can't open /dev/dsp!  por tanto ocupando) el dispositivo. Escriba     
                              fstat | grep dsp. Los sospechosos habituales    
                              son esound y el sistema de sonido de KDE.       

  7.2.3. Como utilizar multiples fuentes de sonido

   Escrito por Munish Chopra.

   Disponer de multiples fuentes de sonido puede ser muy util, por ejemplo
   cuando esound o artsd no permiten compartir el dispositivo de sonido con
   otra aplicacion.

   FreeBSD permite hacerlo gracias a los Virtual Sound Channels (canales
   virtuales de sonido), que se activan mediante sysctl(8). Los canales
   virtuales permiten multiplexar la reproduccion de sonido de su tarjeta
   mezclando el sonido en el kernel.

   El numero de canales virtuales se configura utilizando dos sysctl; como
   root escriba lo siguiente:

 # sysctl hw.snd.pcm0.vchans=4
 # sysctl hw.snd.maxautovchans=4

   En el ejemplo anterior se han creado cuatro canales virtuales, una
   cantidad muy razonable para el uso normal. hw.snd.pcm0.vchans es el numero
   de canales virtuales de que dispone pcm0; puede configurarlo en cuanto el
   dispositivo sea reconocido por el sistema. hw.snd.maxautovchans es el
   numero de canales virtuales que se le asignan a un nuevo dispositivo de
   audio cuando se conecta al sistema mediante kldload(8). Puesto que el
   modulo pcm puede cargarse independientemente de los controladores de
   hardware hw.snd.maxautovchans puede almacenar cuantos canales virtuales
   tienen asignados los dispositivos que se vayan conectando al sistema.

  Nota:

   No es posible modificar el numero de canales virtuales de un dispositivo
   que este en marcha. Cierre antes todos los programas que esten utilizando
   el dispositivo, como reproductores de musica o daemons de sonido.

   Si no usa devfs(5) tendra que configurar sus aplicaciones para que apunten
   a /dev/dsp0.x, donde x es un numero entre 0 y 3 si hw.snd.pcm.0.vchans
   tiene un valor de 4 como en el ejemplo anterior. Si se estuviera usando
   devfs(5) en el ejemplo anterior cualquier programa que pidiera /dev/dsp0
   seria atendido de forma totalmente transparente.

  7.2.4. Asignacion a los canales de mezcla de valores por omision

   Escrito por Josef El-Rayes.

   Los valores por defecto de los distintos canales de mezcla estan fijados
   en el codigo del controlador pcm(4). Hay distintas aplicaciones y daemons
   que le permitiran asignar valores al mezclador y que permanezcan entre uso
   y uso, pero no es una solucion demasiado limpia. Puede asignar valores por
   omision a las mezclas a nivel de controlador definiendo los valores
   apropiados en /boot/device.hints. Veamos un ejemplo:

 hint.pcm.0.vol="50"

   Esto asignara al canal de volumen un valor por omision de 50 al cargar el
   modulo pcm(4).

7.3. Sonido MP3

   Escrito por Chern Lee.

   El formato MP3 (MPEG Layer 3 Audio) llega casi al nivel de calidad del CD,
   por lo que no hay motivo por el deba faltar en su escritorio FreeBSD.

  7.3.1. Reproductores de MP3

   El reproductor de MP3 para X11 mas extendido es, de lejos, XMMS (X
   Multimedia System). Puede usar en el <<skins>>de Winamp puesto que el
   interfaz grafico de XMMS es casi identico al de Nullsoft Winamp. XMMS
   incluye tambien soporte nativo para <<plug-ins>>.

   Puede instalar XMMS como port (multimedia/xmms) o como package.

   La interfaz de XMMS es intuitiva e incluye una lista de reproduccion, un
   ecualizador grafico y muchas otras cosas. Si esta acostumbrado a Winamp
   XMMS le sera muy facil de usar.

   El port audio/mpg123 es un reproductor MP3 que se usa desde la shell.

   Puede especificarle desde la misma linea de ordenes a mpg123 el
   dispositivo de sonido que debe usar y el fichero MP3 que debe reproducir.
   Veamos un ejemplo:

 # mpg123 -a /dev/dsp1.0 ASaber-GrandesExitos.mp3
 High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
 Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
 Uses code from various people. See 'README' for more!
 THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!





 Playing MPEG stream from ASaber-GrandesExitos.mp3 ...
 MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

   Sustituya /dev/dsp1.0 por el dispositivo dsp que haya en su sistema.

  7.3.2. Extraccion de pistas de sonido de un CD

   Antes de convirtir una pista o todo un CD a MP3 la informacion sonido debe
   volcarse al disco duro. Esto se hace convirtiendo los datos <<raw CDDA>>
   (CD Digital Audio) a ficheros WAV.

   La herramienta cdda2wav, que forma parte del port sysutils/cdrtools,
   permite la extraccion de informacion de sonido en CD asi como la
   informacion asociada a el.

   Con el CD en la unidad la siguiente orden (como root) un CD entero en
   ficheros WAV individuales, uno por pista:

 # cdda2wav -D 0,1,0 -B

   cdda2wav soporta unidades CDROM ATAPI (IDE). En el caso de unidades IDE
   especifique el numero de dispositivo en el lugar correspondiente al nuro
   de unidad SCSI. Por ejemplo, para extraer la pista 7 desde una unidad IDE:

 # cdda2wav -D /dev/acd0 -t 7

   La opcion -D 0,1,0 indica el dispositivo SCSI 0,1,0, que corresponde con
   la salida de cdrecord -scanbus.

   Para extraer pistas de forma selectiva use la opcion -t:

 # cdda2wav -D 0,1,0 -t 7

   Esta opcion extrae la septima pista de un CDROM de sonido. Si quiere
   extraer un rango de pistas, por ejemplo las pistas de la uno a la siete,
   declare el rango del siguiente modo:

 # cdda2wav -D 0,1,0 -t 1+7

   La herramienta dd(1) le permite tambien extraer pistas de sonido desde
   unidades ATAPI; consulte la Seccion 18.6.5, "Copiar CD de audio" para mas
   informacion.

  7.3.3. Codificacion de MP3

   Hoy por hoy el codificador de MP3 por antonomasia es lame. Puede encontrar
   lame en audio/lame.

   Partiendo de ficheros WAV previamente extraidos la siguiente orden
   convierte audio01.wav en audio01.mp3:

 # lame -h -b 128 \
 --tt "Titulo de copla o cantar" \
 --ta "Grupo, solista o coral sinfonica" \
 --tl "Titulo del album" \
 --ty "2001" \
 --tc "Autor de la extraccion y paso a MP3" \
 --tg "Estilo" \
 audio01.wav audio01.mp3

   Los 128 kbits pasan por se el estandar de ratio de bits de los MP3, aunque
   puede que usted sea de los que prefieren calidades mas altas, 160 o
   incluso 192. A mayor ratio de bits, mas espacio en disco necesitara,
   aunque la calidad tambien sera mayor. La opcion -h usa el modo <<mas
   calidad pero algo mas lento>>. Las opciones que empiezan por --t indican
   etiquetas ID3, que suelen contener informacion de la cancion que contiene
   el fichero MP3. Tiene informacion sobre otras opciones de codificacion en
   la pagina de manual de lame.

  7.3.4. Decodificacion de MP3

   Para grabar un CD de sonido desde ficheros MP3 hay que convertirlos a
   formato WAV no comprimido. Tanto XMMS como mpg123 soportan la conversion
   de MP3 a un formato de fichero no comprimido.

   Escritura a disco desde XMMS:

    1. Arranque XMMS.

    2. Boton derecho del raon en la ventana para acceder al menu de XMMS.

    3. Elija Preferences en Options.

    4. Cambie el <<Output Plugin>> a <<Disk Writer Plugin>>.

    5. Pulse Configure.

    6. Elija un directorio en el que guardar los ficheros descomprimidos.

    7. Cargue el fichero MP3 en XMMS de la forma habitual, pero asegurese de
       tener el volumen al 100% y las opciones de ecualizacion desactivadas.

    8. Pulse Play - parecera que XMMS esta reproduciendo musica pero no
       sonara nada. Lo que esta haciendo es volcar el MP3 a un fichero.

    9. Recuerde que antes de poder volver a escuchar ficheros MP3 de nuevo
       tendra que devolver el <<Plugin de salida>> por omision a la posicion
       inicial.

   Escritura de la salida estandar en mpg123:

     * Ejecute mpg123 -s audio01.mp3 > audio01.pcm

   XMMS genera un fichero WAV, mientras que mpg123 convierte MP3 a datos de
   sonido raw PCM. Puede usar cdrecord con ambos formatos para crear CD de
   sonido. Tendra que usar burncd(8) para raw PCM. Si lo que tiene son
   ficheros WAV escuchara un ligero clic al principio de cada pista: se trata
   de la cabecera del fichero WAV. Puede eliminar esta cabecera mediante SoX
   (que puede instalar como port desde audio/sox o si lo prefiere como
   package):

 % sox -t wav -r 44100 -s -w -c 2 pista.wav pista.raw

   Consulte la Seccion 18.6, "Creacion y uso de medios opticos (CD)" para mas
   informacion sobre el uso de grabadoras de CD en FreeBSD.

7.4. Reproduccion de video

   Contributed by Ross Lippert.

   La reproduccion de video es un area muy nueva y en la que se producen
   grandes cambios a gran velocidad. Tenga paciencia. Aqui no va a ser todo
   tan sencillo como al configurar el sonido.

   Antes de comenzar es imprescindible que sepa con certeza cual es el modelo
   de su tarjeta grafica y que chip usa. Tanto Xorg como XFree86(TM) soportan
   gran cantidad de tarjetas graficas, pero de pocas se puede decir que den
   un buen rendiemiento de reproduccion. Puede consultar una lista de
   extensiones que el servidor X puede hacer funcionar en su tarjeta
   ejecutando xdpyinfo(1) desde una sesion X11.

   Le recomendamos que tenga a mano un fichero MPEG no muy grande para usarlo
   en las pruebas que haga con los diversos reproductores y opciones. Algunos
   reproductores de DVD buscaran por omision soportes DVD en /dev/dvd
   (algunos incluso tienen fijado en el codigo el nombre de dicha unidad)
   seguramente le resultara util ejecutar los siguientes enlaces simbolicos:

 # ln -sf /dev/acd0 /dev/dvd
 # ln -sf /dev/acd0 /dev/rdvd

   Tenga en cuenta que debido al diseno de devfs(5) los enlaces creados a
   mano no sobreviviran a un reinicio del sistema. Para que asi suceda tras
   cada reinicio debe anadir las siguientes lineas a /etc/devfs.conf:

 link acd0 dvd
 link acd0 rdvd

   Ademas, el descifrado de DVD (una tarea que hara necesario llamar a
   funciones especiales de los DVD-ROM) requiere permisos de escritura en
   unidades DVD.

   Le recomendamos que aumente la memoria compartida del interfaz X11, para
   lo cual tendra que incremente los valores asignados a varias sysctl(8):

 kern.ipc.shmmax=67108864
 kern.ipc.shmall=32768

  7.4.1. Como determinar las caracteristicas de video

   Hay varias formas de reproducir video en X11, pero cual de ellas sea la
   que funcione depende en gran medida del hardware que intervenga. Cada uno
   de los metodos que se describen mas son mejores o peores segun en que
   hardware se ejecute. Ademas el procesamiento de video en X11 es un asunto
   que esta recibiendo mucha atencion ultimamente y en cada nueva version de
   Xorg y de XFree86(TM) no es extrano encontrar avances significativos.

   Veamos una lista de interfaces de video muy comunes:

    1. X11: salida normal de X11 utilizando memoria compartida.

    2. XVideo: una extension del interfaz X11 que permite la reproduccion de
       video en las ventanas de X11.

    3. SDL: Simple Directmedia Layer.

    4. DGA: Direct Graphics Access (acceso directo a graficos.

    5. SVGAlib: capa de consola de graficos a bajo nivel.

    7.4.1.1. XVideo

   Xorg y XFree86(TM) 4.X tienen una extension llamada XVideo (tambien
   conocida como Xvideo, Xv o xv) que permite reproducir video en ventanas
   del sistema X11 a traves de un tipo de aceleracion especial. Dicha
   extension ofrece una calidad de reproduccion muy alta incluso en maquinas
   muy cortas de recursos.

   Utilice xvinfo para saber que extension esta utilizando:

 % xvinfo

   XVideo is supported for your card if the result looks like:

 X-Video Extension version 2.2
 screen #0
   Adaptor #0: "Savage Streams Engine"
     number of ports: 1
     port base: 43
     operations supported: PutImage
     supported visuals:
       depth 16, visualID 0x22
       depth 16, visualID 0x23
     number of attributes: 5
       "XV_COLORKEY" (range 0 to 16777215)
               client settable attribute
               client gettable attribute (current value is 2110)
       "XV_BRIGHTNESS" (range -128 to 127)
               client settable attribute
               client gettable attribute (current value is 0)
       "XV_CONTRAST" (range 0 to 255)
               client settable attribute
               client gettable attribute (current value is 128)
       "XV_SATURATION" (range 0 to 255)
               client settable attribute
               client gettable attribute (current value is 128)
       "XV_HUE" (range -180 to 180)
               client settable attribute
               client gettable attribute (current value is 0)
     maximum XvImage size: 1024 x 1024
     Number of image formats: 7
       id: 0x32595559 (YUY2)
         guid: 59555932-0000-0010-8000-00aa00389b71
         bits per pixel: 16
         number of planes: 1
         type: YUV (packed)
       id: 0x32315659 (YV12)
         guid: 59563132-0000-0010-8000-00aa00389b71
         bits per pixel: 12
         number of planes: 3
         type: YUV (planar)
       id: 0x30323449 (I420)
         guid: 49343230-0000-0010-8000-00aa00389b71
         bits per pixel: 12
         number of planes: 3
         type: YUV (planar)
       id: 0x36315652 (RV16)
         guid: 52563135-0000-0000-0000-000000000000
         bits per pixel: 16
         number of planes: 1
         type: RGB (packed)
         depth: 0
         red, green, blue masks: 0x1f, 0x3e0, 0x7c00
       id: 0x35315652 (RV15)
         guid: 52563136-0000-0000-0000-000000000000
         bits per pixel: 16
         number of planes: 1
         type: RGB (packed)
         depth: 0
         red, green, blue masks: 0x1f, 0x7e0, 0xf800
       id: 0x31313259 (Y211)
         guid: 59323131-0000-0010-8000-00aa00389b71
         bits per pixel: 6
         number of planes: 3
         type: YUV (packed)
       id: 0x0
         guid: 00000000-0000-0000-0000-000000000000
         bits per pixel: 0
         number of planes: 0
         type: RGB (packed)
         depth: 1
         red, green, blue masks: 0x0, 0x0, 0x0

   Tenga en cuenta que los formatos que aparecen en el listado (YUV2, YUV12,
   etc) no aparecen en todas las implementaciones de de XVideo y su ausencia
   puede despistar a algunos reproductores.

   Si el resultado se parece mucho a esto

 X-Video Extension version 2.2
 screen #0
 no adaptors present

   lo mas probable es que su tarjeta no soporte XVideo.

   Si su tarjeta grafica no soporta XVideo lo unico que significa es que para
   su sistema sera mas complicado alcanzar los requisitos computacionales
   necesarios para el procesamiento de video. Dependiendo de la tarjeta
   grafica y el procesador que tenga es posible que de todos modos pueda
   salvar la papeleta. Consulte la seccion sobre recursos avanzados en la
   Seccion 7.4.3, "Lecturas adicionales".

    7.4.1.2. Simple Directmedia Layer

   SDL (Simple Directmedia Layer) se creo pensando en una capa que permitiera
   aplicaciones faciles de portar entre las plataformas
   Microsoft(R) Windows(R), BeOS y UNIX(R) y que permitiera al mismo tiempo
   un uso eficiente del sonido y el video. La capa SDL ofrece abstraccion de
   hardware a bajo nivel, lo que a veces puee ser mas eficiente que la propia
   interfaz X11.

   SDL esta en devel/sdl12.

    7.4.1.3. Direct Graphics Access

   <<Direct Graphics Access>> es una extension de X11 que permite que un
   programa sortee el servidor X y acceda directamente al <<framebuffer>>.
   Utiliza memoria de bajo nivel, asi es imprescindible que se ejecute como
   root.

   Puede probar y analizar el rendimiento de la extension DGA con dga(1). Al
   ejecutar dga la pantalla cambia de color cada vez que pulsa una tecla.
   Para salir de la aplicacion pulse q.

  7.4.2. Ports y packages relacionados con el video

   Esta seccion expone el software existente en la Coleccion de Ports de
   FreeBSD que puede usar para la reproduccion de video. La reproduccion de
   video es un area del desarrollo de software donde hay muchisima actividad,
   de manera que las caracteristicas de mas de una de las aplicaciones que
   vamos a describir pueden ser distintas.

   Lo primero que hay que conocer es el importante detalle de que la mayoria
   de las aplicaciones de video que funcionan en FreeBSD se desarrollaron
   para Linux. Muchas de esas aplicaciones todavia estan en versiones beta.
   Estos son algunos de los problemas que puede encontrarse durante el uso de
   software de video en FreeBSD:

    1. Una aplicacion no puede reproducir un fichero que ha generado otra
       aplicacion distinta.

    2. Una aplicacion no puede reproducir un fichero que ella misma a
       generado.

    3. La misma aplicacion ejecutandose en dos maquinas distintas, compilada
       en cada una de esas maquinas; la reproduccion del mismo fichero da
       resultados diferentes.

    4. El uso de un filtro aparentemente trivial como es redimensionar una
       imagen aplicando una escala da como fruto un resultado horroroso
       debido a que la rutina encargada de aplicarla es defectuosa.

    5. Que una aplicacion de volcados de memoria (<<core dumps>>).

    6. La documentacion no se instala con el port, pero si que existe en la
       web o en el directorio work del port.

   La mayoria de estas aplicaciones muestra sintomas evidente de
   <<Linuxismo>>, es decir, hay problemas derivados del modo en el que se
   implementan las bibliotecas en las distribuciones de Linux, o del hecho de
   que ciertas caracteristicas del kernel de Linux han sido dadas por
   omnipresentes por los autores de las aplicaciones. Estos problemas no
   siempre han sido advertidas y solucionadas de algun modo por los
   responsables de los ports, lo que puede desembocar en problemas como:

    1. El uso de /proc/cpuinfo para detectar las caracteristicas del
       procesador.

    2. El uso erroneo de los hilos puede causar que ciertos programas se
       cuelguen al intentar cerrarse en lugar de cerrarse correctamente.

    3. Software que aun no esta en la Coleccion de Ports de FreeBSD usado
       frecuentemente con la aplicacion.

   Hasta ahora los autores de las aplicaciones han colaborado de buen grado
   con los responsables de los ports para hacer mas sencillo el trabajo de
   portar estas aplicaciones a FreeBSD.

    7.4.2.1. MPlayer

   MPlayer es un reproductor de video desarrollado muy recientemente y con un
   desarrollo rapidisimo. Los objetivos del equipo MPlayer son la velocidad y
   la flexibilidad en Linux y otros sistemas Unix. El proyecto comenzo cuando
   el fundador del equipo se canso de padecer el pobre rendimiento de los
   reproductores de video que habia disponibles en ese momento. Hay quien
   dice que el interfaz grafico fue sacrificado en pos de un diseno mas
   ligero, aunque una vez que se acostumbre a las opciones desde la linea de
   ordenes y a los atajos de teclado todo ira como la seda.

      7.4.2.1.1. Compilacion de MPlayer

   Encontrara MPlayer en multimedia/mplayer. MPlayer ejecuta una serie de
   pruebas de hardware durante el proceso de compilacion, dando como
   resultado un binario que no tiene por que funcionar en otros sistemas.
   Recuerde, por tanto, compilar la aplicacion como port y no utilice el
   package binario. Ademas hay multiples parametros que puede pasarle a make,
   tal y como vera al comenzar la compilacion:

 # cd /usr/ports/multimedia/mplayer
 # make
 N - O - T - E

 Take a careful look into the Makefile in order
 to learn how to tune mplayer towards you personal preferences!
 For example,
 make WITH_GTK1
 builds MPlayer with GTK1-GUI support.
 If you want to use the GUI, you can either install
 /usr/ports/multimedia/mplayer-skins
 or download official skin collections from
 http://www.mplayerhq.hu/homepage/dload.html

   Las opciones por omision del port deberian bastar para la mayoria de los
   usuarios, aunque si va a necesitar el codec XviD tendra que especificar
   WITH_XVID en la linea de ordenes. La unidad de DVD por defecto se puede
   definir con la opcion WITH_DVD_DEVICEsi la opcion por omision, /dev/acd0,
   no le sirve.

   En el momento de escribir esto el port de MPlayer genera la documentacion
   en formato HTML y dos ejecutables: mplayer y mencoder, que es una
   herramienta para recodificar video.

   La documentacion en HTML de MPlayer es muy informativa. Si el lector no
   cubre todas sus dudas sobre hardware de video e interfaces con el
   contenido de este capitulo la documentacion de MPlayer es el sitio donde
   debe buscar. Si quiere mas informacion sobre el soporte de video en
   UNIX(R) el mejor sitio para consultar es, sin duda alguna, la
   documentacion de MPlayer.

      7.4.2.1.2. Uso de MPlayer

   Los usuarios de MPlayer deben crear un subdirectorio .mplayer en su
   <<home>>. Para crear este directorio (necesario para el funcionamiento de
   la aplicacion) teclee lo siguiente:

 % cd /usr/ports/multimedia/mplayer
 % make install-user

   Las opciones de mplayer para la linea de ordenes se detallan en la pagina
   de manual. Si necesita todavia mas detalles consulte la documentacion en
   HTML. En esta seccion se va a explicar solamente lo mas basico.

   Para reproducir el fichero ficherodeprueba.avi, mediante una de las
   diversas interfaces de video utilice la opcion -vo:

 % mplayer -vo xv ficherodeprueba.avi

 % mplayer -vo sdl ficherodeprueba.avi

 % mplayer -vo x11 ficherodeprueba.avi

 # mplayer -vo dga ficherodeprueba.avi

 # mplayer -vo 'sdl:dga' ficherodeprueba.avi

   Merece la pena que pruebe todas, puesto que el rendimiento relativo
   depende en gran medida de muchos factores y sera muy distinto el resultado
   dependiendo del hardware.

   Si quiere reproducir un DVD sustituya ficherodeprueba.avi por dvd://N
   -dvd-device DISPOSITIVO, donde N es el numero de titulo que quiere
   reproducir y DISPOSITIVO es el nodo de dispositivo del DVD-ROM. Veamos un
   ejemplo: para reproducir el titulo 3 desde /dev/dvd ejecutaremos:

 # mplayer -vo xv dvd://3 -dvd-device /dev/dvd

  Nota:

   La unidad de DVD por omision puede definirse durante la compilacion del
   port de MPlayer con la opcion WITH_DVD_DEVICE. Por defecto apunta a
   /dev/acd0. Tiene todos los detalles en el Makefile del port.

   Consulte los atajos de teclado para parar la reproduccion, ponerla en
   pausa, etc. consulte la salida de mplayer -h o mejor aun lese la pagina de
   manual.

   Hay otras opciones que le resultaran de interes para la reproduccion: -fs
   -zoom, para la reproduccion a pantalla completa y -framedrop, que mejora
   el rendimiento.

   Para evitar que la linea de ordenes se haga demasiado larga puede crear un
   fichero .mplayer/config e introducir en el las opciones que quiera usar
   desde el arranque de la aplicacion:

 vo=xv
 fs=yes
 zoom=yes

   Para terminar, puede usar mplayer para extraer un titulo de un DVD a un
   fichero .vob. Por ejemplo, si quiere extraer el segundo titulo de un DVD
   escriba esto:

 # mplayer -dumpstream -dumpfile salida.vob dvd://2 -dvd-device /dev/dvd

   El fichero de salida, salida.vob, un MPEG y puede manipularlo con las
   aplicaciones que se describen en esta seccion.

      7.4.2.1.3. mencoder

   Antes de empezar a usar mencoder le recomendamos que se familiarice con
   las opciones que se detallan en la documentacion HTML. Hay tambien una
   pagina de manual, pero no es de mucha utilidad sin la documentacion HTML.
   Hay una ingente cantidad de formas de mejorar la calidad, reducir el ratio
   de bits y cambiar formatos; alguno de esos pequenos trucos pueden marcar
   la diferencia entre un buen y un mal rendimiento. Le mostramos un par de
   ejemplos por los que puede empezar. El primero es una simple copia:

 % mencoder entrada.avi -oac copy -ovc copy -o salida.avi

   Ciertas combinaciones erroneas de opciones en la linea de ordenes pueden
   dar como fruto un fichero de salida que no puede reproducir ni siquiera el
   propio mplayer, asi que si lo que quiere es extraer datos a un fichero
   siga usando tranquilamente la opcion -dumpfile de mplayer.

   Para convertir entrada.avi con codificacion MPEG4 y audio con codificacion
   MPEG3 (necesitara audio/lame):

 % mencoder entrada.avi -oac mp3lame -lameopts br=192 \
          -ovc lavc -lavcopts vcodec=mpeg4:vhq -o salida.avi

   El fichero de salida puede verse con mplayer y con xine.

   Si sustituye entrada.avi por dvd://1 -dvd-device /dev/dvd y lo ejecuta
   como root puede recodificar un titulo de DVD directamente. Es posible que
   el resultado no sea muy satisfactorio tras los primeros intentos, asi que
   le recomendamos que vuelque el titulo a un fichero y haga todas las
   pruebas que necesite sobre ese fichero.

    7.4.2.2. El reproductor de video xine

   El reproductor de video xine es un ambicioso proyecto que tiene como meta
   ofrecer no solamente una aplicacion de video <<todo en uno>>, sino crear
   una biblioteca base reutilizable y un ejecutable modular que puede
   ampliarse mediante <<plugins>>. Existe como package y tambien como port:
   multimedia/xine.

   El reproductor xine esta todavia en mantillas, pero sus primeros pasos
   estan siendo muy interesantes. xine requiere o una CPU rapida o una
   tarjeta grafica, o bien soporte para la extension XVideo. El GUI es
   intuitivo, aunque un tanto pedestre.

   En el momento de escribir esto xine no incorpora ningun modulo de entrada
   que sirva para reproducir DVD codificados con CSS. Hay versiones
   compiladas por terceros que tienen modulos que lo permiten, pero ninguna
   de ellas esta en la Coleccion de Ports de FreeBSD.

   Comparado con MPlayer xine deja las cosas mas hechas para el usuario, pero
   al mismo tiempo pone mas dificil el control exhaustivo sobre todo lo que
   pasa. El reproductor xine da un mejor rendimiento en interfaces XVideo.

   Por omision xine arranca con un intefaz grafico de usuario. Los menus
   pueden usarse para abrir un fichero en concreto:

 % xine

   Tambien puede invocar la aplicacion desde la linea de ordenes para que
   reproduzca un fichero inmediatamente y sin utilizar el GUI:

 % xine -g -p fichero.avi

    7.4.2.3. Las herramientas transcode

   transcode no es un reproductor, sino una suite de herramientas para
   recodificar (tambien se podria usar la palabra <<transcodificar>>, de ahi
   su nombre) ficheros de sonido y de video. Con transcode es posible fundir
   ficheros de video y reparar ficheros deteriorados desde la linea de
   ordenes y en las interfaces de flujo stdin/stdout.

   Puede configurar gran cantidad de opciones en el momento de la compilacion
   de multimedia/transcode; le recomendamos que use la siguiente linea de
   ordenes para compilar transcode:

 # make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
 WITH_MJPEG=yes -DWITH_XVID=yes

   La configuracion que le proponemos deberi satisfacer a la mayoria de los
   usuarios.

   Veamos un ejemplo ilustrativo de las posibilidades de transcode: convertir
   un fichero DivX en un fichero PAL MPEG-1 (PAL VCD):

 % transcode -i input.avi -V --export_prof vcd-pal -o output_vcd
 % mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa

   Puede reproducir el fichero MPEG resultante, output_vcd.mpg, con MPlayer.
   Si quiere tambien puede grabar el fichero en un CD-R y tendra un VideoCD,
   aunque para eso tendra que instalar multimedia/vcdimager y
   sysutils/cdrdao.

   Consulte la pagina de manual de transcode, pero no olvide consultar
   tambien el wiki de transcode, en el que encontrara mas informacion y
   muchos ejemplos.

  7.4.3. Lecturas adicionales

   El desarrollo de las diversas aplicaciones de video disponibles en FreeBSD
   avanza rapidamente. Es muy posible que en un futuro cercano la mayoria de
   los problemas de los que hemos hablado aqui hayan sido resueltos. Mientras
   tanto quien quiera exprimir las capacidades de FreeBSD en las areas del
   sonido y el video tendran que recopilar la informacion repartida en varias
   FAQ y tutoriales y utilizar unos cuantos programas diferentes. En esta
   seccion se le proponen al lector interesado varias fuentes de informacion
   adicional.

   La documentacion de MPlayer contiene una gran cantidad de informacion
   tecnica. Cualquiera que quiera alcanzar un alto grado de conocimiento en
   video sobre UNIX(R) debe consultar esa documentacion. La lista de correo
   de MPlayer es sumamente hostil hacia quien no se ha molestado en leer la
   documentacion antes de preguntar, asi que si va a enviar informes de
   errores a esa lista, por favor, lease la documentacion..

   El texto xine HOWTO contiene un capitulo sobre mejora del rendimiento que
   afecta a todos los reproductores.

   Hay unas cuantas aplicaciones muy prometedoras que el lector deberia al
   menos probar:

     * Avifile, que encontrara en los ports:multimedia/avifile.

     * Ogle, tambien en la coleccion de ports: multimedia/ogle.

     * Xtheater

     * multimedia/dvdauthor, una aplicacion libre para la produccion de
       contenidos en DVD.

7.5. Configuracion de tarjetas de TV

   Texto original de Josef El-Rayes.
   Ampliado y adaptado por Marc Fonvieille.

  7.5.1. Introduccion

   Las tarjetas de TV le permiten ver en su sistema emisiones de TV
   tradicionales o incluso por cable. La mayoria aceptan video compuesto
   mediante RCA o una entrada de S-video; algunas de estas tarjetas
   incorporan tambien un sintonizador de radio FM.

   FreeBSD puede utilizar tarjetas de TV PCI que tengan el chip Brooktree
   Bt848/849/878/879 o el chip de captura de video Conexant CN-878/Fusion
   878a gracias al controlador bktr(4). Asegurese de que la tarjeta tiene un
   sintonizador que este soportado: consulte la lista de sintonizadores
   soportados que encontrara en la pagina de manual de bktr(4).

  7.5.2. Anadir el controlador

   Poder usar la tarjeta tendra que cargar el controlador bktr(4). Una forma
   de hacerlo es andir la siguiente linea al fichero /boot/loader.conf:

 bktr_load="YES"

   Tambien puede hacerlo compilando estaticamente el soporte para la tarjeta
   de TV en su kernel; anada las siguientes lineas al fichero de
   configuracion de su kernel:

 device   bktr
 device  iicbus
 device  iicbb
 device  smbus

   Es necesario incluir todas esas lineas adicionales porque los componentes
   de la tarjeta estan conectados entre si por un bus I2C. Hecho esto compile
   e instale su nuevo kernel.

   Una vez anadido el soporte de la tarjeta al sistema tendra que reiniciar.
   Durante el arranque deberian aparecer rastros de su tarjeta de TV. Veamos
   un ejemplo:

 bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
 iicbb0: <I2C bit-banging driver> on bti2c0
 iicbus0: <Philips I2C bus> on iicbb0 master-only
 iicbus1: <Philips I2C bus> on iicbb0 master-only
 smbus0: <System Management Bus> on bti2c0
 bktr0: Pinnacle/Miro TV, Philips SECAM tuner.

   Es obvio que estos mensajes seran distintos segun sea el hardware del que
   se trate. Asegurese de que el sistema detecta correctamente el
   sintonizador. Se puede sobreescribir alguno de los parametros detectados
   por el sistema mediante MIB sysctl(8) y opciones del fichero de
   configuracion del kernel. Si por ejemplo quiere obligar al sintonizador
   para que se comporte como un Phillips SECAM anada lo siguiente al fichero
   de configuracion de su kernel:

 options OVERRIDE_TUNER=6

   Puede utilizar directamente sysctl(8):

 # sysctl hw.bt848.tuner=6

   Consulte en bktr(4) y en /usr/src/sys/conf/NOTES si necesita mas detalles
   sobre las opciones disponibles.

  7.5.3. Aplicaciones utiles

   Tendra que instalar una de estas aplicaciones para poder utilizar su
   tarjeta de TV:

     * multimedia/fxtv ofrece <<TV en una ventana>> y captura de
       imagen/sonido/video.

     * multimedia/xawtv: otra aplicacion de TV; ofrece lo mismo que fxtv.

     * misc/alevt decodifica y reproduce videotexto y teletexto.

     * audio/xmradio permite utilizar el sintonizador de radio FM que
       incorporan algunas tarjetas de TV.

     * audio/wmtune, una aplicacion de escritorio muy util para el uso de
       sintonizadores de radio.

   Hay mas aplicaciones utiles en la Coleccion de de Ports de FreeBSD.

  7.5.4. Solucion de problemas

   Si tiene algun problema con su tarjeta de TV compruebe en primer lugar que
   el chip de captura de video y el sintonizador realmente funcionan con el
   controlador bktr(4) y si ha utilizado las opciones de configuracion mas
   adecuadas. Si necesita mas ayuda o necesita respuestas sobre su tarjeta de
   TV puede recurrir a la lista de correo freebsd-multimedia.

7.6. Escaneres de imagenes

   Escrito por Marc Fonvieille.

  7.6.1. Introduccion

   El acceso a escaneres de imagenes en FreeBSD funciona gracias a la API
   SANE (siglas de <<Scanner Access Now Easy>>, <<el acceso a escaneres ahora
   es facil>>), disponible en la Coleccion de Ports de FreeBSD. SANE utiliza
   tambien ciertos controladores de FreeBSD para acceder al hardware del
   escaner.

   FreeBSD puede utilizar tanto escaneres SCSI como USB. Asegurese de que el
   suyo funciona con SANE antes de intentar ningun tipo de configuracion.
   SANE tiene una lista de dispositivos soportados donde encontrara
   informacion actualizada sobre hasta donde funciona el escaner y su
   estatus. La pagina de manual de uscanner(4) incluye una listas de
   escaneres USB que funcionan con SANE.

  7.6.2. Configuracion del kernel

   Como ya se ha dicho tanto los interfaces USB como las SCSI funcionan.
   Segun sea el interfaz de su escaner necesitara un tipo diferente de
   controlador:

    7.6.2.1. Interfaz USB

   El kernel GENERIC incluye por omision los controladores de dispositivo
   necesarios para poder usar escaneres USB. Si va a personalizar su kernel
   asegurese de que esto esta en el fichero de configuracion del mismo:

 device usb
 device uhci
 device ohci
 device uscanner

   Segun cual sea el chipset de su placa base tendra que usar device uhci o
   device ohci, aunque si tiene ambos no tendra problemas por eso.

   Si por cualquier motivo no quiere recompilar su kernel y su kernel no es
   el GENERIC puede cargar el modulo controlador de dispositivo uscanner(4)
   con kldload(8):

 # kldload uscanner

   Si quiere cargar este modulo cada vez que arranque el sistema debe anadir
   la siguiente linea a /boot/loader.conf:

 uscanner_load="YES"

   Tras reiniciar con el kernel correcto (o una vez que el modulo este
   cargado) conecte su escaner USB. Debe aparecer en el <<buffer>> de
   mensajes del sistema (dmesg(8)) un mensaje una linea como la siguiente:

 uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2

   La linea del ejemplo muestra que nuestro escaner esta utilizando el nodo
   de dispositivo/dev/uscanner0.

    7.6.2.2. Interfaz SCSI

   Si su escaner tiene un interfaz SCSI es importante saber que controladora
   SCSI incorpora. El chipset SCSI que tenga influira en la configuracion del
   kernel que tenga que personalizar. El kernel GENERIC tiene controladores
   de dispositivo para las controladoras SCSI mas comunes. Consulte el
   fichero NOTES y anada la linea correcta al fichero de configuracion de su
   kernel. Tendra que anadir tambien la siguiente linea:

 device scbus
 device pass

   Una vez compilado e instalado el kernel correctamente tiene ya que ver sus
   nuevos dispositivos en el <<buffer>> de mensajes del sistema:

 pass2 at aic0 bus 0 target 2 lun 0
 pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
 pass2: 3.300MB/s transfers

   Si su escaner estaba apagado durante el arranque puede forzar manualmente
   la deteccion si ejecuta una busqueda de buses SCSI con camcontrol(8):

 # camcontrol rescan all
 Re-scan of bus 0 was successful
 Re-scan of bus 1 was successful
 Re-scan of bus 2 was successful
 Re-scan of bus 3 was successful

   El escaner aparecera en la lista de dispositivos SCSI:

 # camcontrol devlist
 <IBM DDRS-34560 S97B>              at scbus0 target 5 lun 0 (pass0,da0)
 <IBM DDRS-34560 S97B>              at scbus0 target 6 lun 0 (pass1,da1)
 <AGFA SNAPSCAN 600 1.10>           at scbus1 target 2 lun 0 (pass3)
 <PHILIPS CDD3610 CD-R/RW 1.00>     at scbus2 target 0 lun 0 (pass2,cd0)

   Tiene todos los detalles sobre los dispositivos SCSI en las paginas de
   manual de scsi(4) y camcontrol(8).

  7.6.3. Configuracion de SANE

   El sistema SANE se divide en dos partes: los <<backends>>
   (graphics/sane-backends) y los <<frontends>> (graphics/sane-frontends).
   Los <<backends>> facilitan el acceso al escaner propiamente dicho. La
   lista de dispositivos que funcionan con SANE le dira que <<backend>> hara
   funcionar su escaner de imagenes. No hay mas remedio que identificar
   correctamente el <<backend>> de su escaner para poder usarlo. Los
   <<frontends>> ofrecen una interfaz grafica para escanear (xscanimage).

   Lo primero que hay que hacer es instalar el port o package de
   graphics/sane-backends. Despues ejecute la orden sane-find-scanner para
   comprobar el funcionamiento de la deteccion de escaneres del sistema SANE:

 # sane-find-scanner -q
 found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3

   En la salida de la orden anterior se le mostrara el tipo de interfaz del
   escaner y el nodo de dispositivo a traves del cual el sistema accede a el.
   Es posible que no aparezcan la marca y el modelo, pero eso no tiene
   importancia.

  Nota:

   Algunos escaneres USB necesitan que les instale un <<firmware>>; esto se
   explica en la pagina de manual del <<backend>> correspondiente. Tambien
   debe leer las paginas de manual sane-find-scanner(1) y sane(7).

   Ahora hay que comprobar que el <<frontend>> de escaneo puede identificar
   el escaner. Por omision los <<backends>> de SANE incorporan una
   herramienta de linea de ordenes llamada scanimage(1), que le mostrara una
   lista de dispositivos e incluso una captura de imagen desde la shell. La
   opcion -L muestra una lista de escaners:

 # scanimage -L
 device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner

   Si el software no lanza ningun mensaje, o si el mensaje indica que no se
   han encontrado escaneres significa que scanimage(1) no puede identificar
   su escaner. Si este es el caso tendra que editar el fichero de
   configuracion del <<backend>>y definir en el el escaner que quiera
   utilizar. Encontrara todos los ficheros de configuracion de los
   <<backends>> en el directorio /usr/local/etc/sane.d/. Este problema con la
   identificacion del hardware es relativamente frecuente con ciertos modelos
   de escaneres USB.

   Por ejemplo, con el escaner que hemos usado en la Seccion 7.6.2.1,
   "Interfaz USB" la orden sane-find-scanner nos da la siguiente informacion:

 # sane-find-scanner -q
 found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0

   El escaner ha sido detectado sin problemas, utiliza el interfaz USB y esta
   conectado al nodo de dispositivo /dev/uscanner0 . Ahora comprobaremos que
   podemos identificar correctamente el escaner:

 # scanimage -L

 No scanners were identified. If you were expecting something different,
 check that the scanner is plugged in, turned on and detected by the
 sane-find-scanner tool (if appropriate). Please read the documentation
 which came with this software (README, FAQ, manpages).

   No hemos podido identificar el escaner, asi que hemos de editar el fichero
   /usr/local/etc/sane.d/epson.conf. Estamos usando el modelo de escaner
   EPSON Perfection(R) 1650, asi que ya sabemos que el escaner utilizara el
   <<backend>> epson. Lea atentamente los comentarios que hay en los ficheros
   de configuracion de los <<backends>>. Lo que hay que hacer es muy
   sencillo: basta con comentar las lineas en las que aparecen interfaces que
   no sean el perfecto para su escaner. En nuestro caso comentaremos todas
   las lineas que comiencen por scsi puesto que nuestro escaner tiene
   interfaz USB. Despues de esto hay que anadir una lina al final del fichero
   declarando el interfaz y el nodo de dispositivo que se van a usar. En el
   caso del ejemplo esto es lo que anadimos:

 usb /dev/uscanner0

   Por favor, lea los comentarios que encontrara en el fichero de
   configuracion del <<backend>> y la pangina de manual de del <<backend>> si
   necesita mas informacion sobre la sintaxis que debe usar. Hecho esto
   podemos verificar si ya podemos identificar el escaner:

 # scanimage -L
 device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner

   Hemos identificado nuestro escaner USB. Ni tiene importancia si la marca y
   modelo que hemos visto no coinciden con nuestro escaner. Lo unico
   realmente importante es el campo `epson:/dev/uscanner0', que nos da el
   nombre correcto del <<backend>> y el nodo de dispositivo correcto.

   Una vez que scanimage -L llega a ver al escaner hemos terminado con la
   configuracion. El dispositivo esta listo para escanear imangenes.

   scanimage(1) permite ejecutar una captura de imagen desde la linea de
   ordenes, pero siempre es mejor utilizar un interfaz grafico de usuario
   para estas tareas. SANE ofrece un interfaz grafico simple pero eficiente:
   xscanimage (graphics/sane-frontends).

   Otro <<frontend>> grafico para escanear que se ha hecho muy popular es
   Xsane (graphics/xsane). Este <<frontend>> tiene caracteristicas muy
   avanzadas como varios modos de escaneo (fotocopia, fax, etc.), correccion
   de color, escaneo de imagenes por lotes, etc. Ambas aplicaciones pueden
   utilizarse ademas como <<plugins>> de GIMP.

  7.6.4. Dar acceso al escaner a otros usuarios

   Todo lo que se ha mostrado en esta seccion se ha ejecutado con privilegios
   de root. Lo normal es que haya otros usuarios que tengan que tener acceso
   al escaner. Un usuario que quiera usar el escaner tiene que tener acceso
   de lectura y escritura al nodo de dispositivo que usa el escaner. Por
   ejemplo, nuestro escaner USB utiliza el nodo de dispositivo /dev/uscanner0
   propiedad del grupo operator. Al anadir al usuario joe al grupo operator
   este podra acceder al esc'ner:

 # pw groupmod operator -m joe

   Para mas informacion sobre el uso de pw(8) lea su pagina de manual. Tendra
   tambien que configurar correctamente los permisos de escritura (0660 o
   0664) en el nodo de dispositivo /dev/uscanner0; por omision los miembros
   del grupo operator solo tienen acceso de lectura en este nodo de
   dispositivo. Anada las siguientes lineas al fichero lines to the
   /etc/devfs.rules:

 [system=5]
 add path uscanner0 mode 660

   Ahora anada lo siguiente a /etc/rc.conf y reinicie la maquina:

 devfs_system_ruleset="system"

   Para mas informacion sobre lo que acaba de leer consulte la pagina de
   manual de devfs(8).

  Nota:

   Por seguridad deberia pensarse dos veces el hecho mismo de anadir
   cualquier usuario a un grupo y muy especialmente al grupo operator.

Capitulo 8. Configuracion del kernel de FreeBSD

   Actualizado y reestructurado por Jim Mock.
   Texto original por Jake Hamby.
   Tabla de contenidos

   8.1. Sinopsis

   8.2. ?Que razones hay para compilar un kernel personalizado?

   8.3. Inventario de hardware del sistema

   8.4. Controladores del kernel, subsistemas y modulos

   8.5. Compilacion e instalacion de un kernel personalizado

   8.6. El fichero de configuracion

   8.7. Que hacer si algo va mal

8.1. Sinopsis

   El kernel de FreeBSD es el corazon del sistema operativo. Es el
   responsable de la gestion y control de la memoria, reforzamiento de los
   controles de seguridad, gestion de redes, acceso a dispositivos y muchas
   cosas mas. FreeBSD es un sistema dinamico y configurable, pero a veces
   sigue siendo necesario reconfigurar y recompilar un kernel hecho a la
   medida de nuestras necesidades.

   Una vez leido este capitulo sabra usted:

     * Por que puede ser necesario que compile un kernel personalizado.

     * Como crear un fichero de configuracion del kernel, o bien editar un
       fichero existente.

     * Como utilizar el fichero de configuracion para crear y compilar un
       nuevo kernel.

     * Como instalar su nuevo kernel.

     * Como resolver algunos problemas si algo sale mal.

8.2. ?Que razones hay para compilar un kernel personalizado?

   Tradicionalmente FreeBSD ha contado con lo que se conoce como un kernel
   "monolitico". Esto quiere decir que el kernel era un gran y unico programa
   que se comunicaba con una lista previa de dispositivos, y que si se
   deseaba modificar el comportamiento del kernel se debia compilar un nuevo
   kernel y reiniciar el sistema con el nuevo kernel.

   Hoy en dia FreeBSD evoluciona muy rapidamente hacia un modelo donde la
   funcionalidad del kernel se basa en modulos, los cuales pueden cargarse y
   descargarse dinamicamente de acuerdo a las necesidades del kernel. Esto
   permite al kernel adaptarse al nuevo hardware que sale al mercado (como
   las tarjetas PCMCIA en sistemas portatiles), o bien anadir nuevas
   funcionalidades al kernel que no eran al compilarlo la vez anterior. Esto
   es lo que conocemos como kernel modular.

   A pesar de lo dicho aun es necesario llevar a cabo cierta configuracion
   estatica en la configuracion del kernel. A veces se debe a que la
   funcionalidad del sistema esta tan ligada al kernel que no puede hacerse
   mediante carga dinamica de modulos. En otros casos puede tratarse
   simplemente de que nadie ha programado un modulo para esa funcionalidad
   concreta que pueda cargarse dinamicamente en el kernel.

   Compilar un kernel personalizado es uno de los ritos de iniciacion mas
   importantes a los que los usuarios de casi todos los BSD han de
   enfrentarse. Este proceso lleva su tiempo, pero le aportara grandes
   beneficios a su sistema FreeBSD. A diferencia del kernel GENERIC, con el
   que puede funcionar una cantidad apabullante de hardware disponible en el
   mercado, un kernel personalizado contiene unicamente lo necesario para que
   funcione el hardware de su sistema. Obviamente esto tiene sus ventajas:

     * Mayor rapidez en el arranque del sistema. Dado que el kernel solo
       tiene que probar el hardware que realmente esta en el sistema el
       tiempo que necesitara para arrancar se reducira visiblemente.

     * Menor uso de memoria. Generalmente un kernel personalizado utiliza
       menos memoria que un kernel GENERIC, lo cual es importante ya que el
       kernel debe encontrarse siempre en memoria real. Por esta razon un
       kernel personalizado puede ser de gran utilidad en sistemas con una
       cantidad limitada de memoria RAM.

     * Hacer funcionar hardware especifico. Un kernel personalizado le
       permite anadir al sistema dispositivos como tarjetas de sonido, que no
       estan incluidas en el kernel GENERIC.

8.3. Inventario de hardware del sistema

   Escrito por Tom Rhodes.

   Antes de aventurarnos en la configuracion del kernel nunca esta de mas
   disponer de un inventario completo del hardware que hay en la maquina. En
   los casos en los que FreeBSD no es el sistema operativo principal de la
   maquina puede conseguir el inventario consultando la configuracion de otro
   sistema operativo. Por ejemplo, el Gestor de dispositivos de Microsoft(R)
   suele contener informacion importante sobre los dispositivos que haya en
   la maquina. El Gestor de dispositivos esta en el panel de control.

  Nota:

   Algunas versiones de Microsoft(R) Windows(R) tienen un icono de Sistema
   con forma de pantalla desde el que se puede acceder al Gestor de
   dispositivos.

   Si no hay otro sistema operativo en la maquina el administrador tendra que
   conseguir la informacion por su cuenta. Una forma de hacerlo es mediante
   dmesg(8) y man(1). La mayoria de los controladores de dispositivo que hay
   en FreeBSD tienen una pagina de manual, que suele incluir una lista del
   hardware que puede hacer funcionar. En la prueba del sistema durante el
   arranque va apareciendo una lista del harware que hay en la maquina. Por
   ejemplo, las siguientes lineas indican que el controlador psm ha
   encontrado un raton:

 psm0: <PS/2 Mouse> irq 12 on atkbdc0
 psm0: [GIANT-LOCKED]
 psm0: [ITHREAD]
 psm0: model Generic PS/2 mouse, device ID 0

   Puede anadir este controlador al fichero de configuracion de su kernel
   personalizado o cargarlo utilizando loader.conf(5).

   A veces los datos que muestra dmesg solamente muestran mensajes del
   sistema en lugar de la salida de la prueba de arranque. En esos casos
   puede ver la verdadera salida de dmesg en el fichero /var/run/dmesg.boot.

   Otro metodo para identificar el hardware del sistema es usar pciconf(8),
   que tiene una salida mucho mas verbosa. Veamos un ejemplo:

 ath0@pci0:3:0:0:        class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
     vendor     = 'Atheros Communications Inc.'
     device     = 'AR5212 Atheros AR5212 802.11abg wireless'
     class      = network
     subclass   = ethernet

   Este fragmento, obtenido con pciconf -lv muestra como el controlador ath
   ha encontrado un dispositivo Ethernet inalambrico. Escriba man ath para
   consultar la pagina de manual de ath(4).

   La opcion -k de man(1) le suministrara valiosa informacion. Sigamos con el
   ejemplo anterior:

 # man -k Atheros

   Con esto obtendremos una lista de paginas de manual que contienen esa
   palabra en particular:

 ath(4)                   - Atheros IEEE 802.11 wireless network driver
 ath_hal(4)               - Atheros Hardware Access Layer (HAL)

   Una vez que tenemos nuestra flamante lista de hardware del sistema el
   proceso de compilar un kernel personalizado deberia parecer un poco menos
   inquietante.

8.4. Controladores del kernel, subsistemas y modulos

   Antes de compilar un kernel personalizado conviene pensar antes los
   motivos. Si lo que se necesita es anadir hardware especifico al sistema es
   posible que sea posible utilizarlo mediante un modulo.

   Los modulos del kernel estan en el directorio /boot/kernel y se pueden
   cargar dinamicamente en un kernel en funcionamiento con kldload(8). La
   mayoria, por no decir todos, los controladores del kernel tienen un modulo
   especifico y una pagina de manual. Por ejemplo, en la seccion anterior
   hablabamos del controlador Ethernet inalambrico ath. La pagina de manual
   de este dispositivo contiene la siguiente informacion:

 Alternatively, to load the driver as a module at boot time, place the
      following line in loader.conf(5):

            if_ath_load="YES"

   Si hace lo que dice ahi, es decir, anadir la linea if_ath_load="YES" al
   fichero /boot/loader.conf hara que el modulo se cargue dinamicamente cada
   vez que el sistema arranque.

   Hay casos, no obstante, en los que no existe el modulo correspondiente.
   Esto sucede con ciertos subsistemas y con controladores muy importantes,
   como por ejemplo el de FFS, que necesita el kernel. Igual sucede con la
   posibilidad de utilizar redes (INET). Por desgracia, en estos casos la
   unica forma de saber si hace falta un controlador es buscar el modulo.

  Aviso:

   Es sumamente facil quitar un dispositivo o una opcion del kernel y
   encontrarse de manos a boca con un kernel que no funciona. Por ejemplo, si
   elimina el controlador ata(4) del fichero de configuracion del kernel un
   sistema que utilice unidades de disco ATA no podra arrancar a menos que se
   anada la linea correspondiente al fichero loader.conf. Si tiene dudas
   busque el modulo y deje el kernel como esta.

8.5. Compilacion e instalacion de un kernel personalizado

   En primer lugar, hagamos un breve recorrido por el directorio donde se
   lleva a cabo la compilacion del kernel. Todos los directorios mencionados
   hacen referencia al directorio principal, que es /usr/src/sys, al que
   tambien podemos acceder desde /sys. Existen gran cantidad de
   subdirectorios que representan diferentes partes del kernel, pero el mas
   importante para lo que deseamos hacer son arch y /conf, que es donde se
   llevara a cabo la edicion del fichero de configuracion y la compilacion
   propiamente dicha del mismo, el punto de partida para la personalizacion
   del kernel. El directorio arch representa la arquitectura del sistema, por
   lo que puede ser i386, alpha, amd64, ia64, powerpc, sparc64 o pc98 (una
   arquitectura alternativa, similar a PC y muy popular en Japon). Todo lo
   que existe dentro de un directorio de una arquitectura en particular, es
   especifico para dicha arquitectura; el resto del codigo es comun para
   todas las plataformas en las que FreeBSD puede funcionar. Observe la
   organizacion logica de la estructura de los directorios, con cada
   dispositivo utilizable en el sistema, sistema de ficheros y opciones, cada
   cosa en su propio subdirectorio.

   A lo largo de este capitulo asumiremos que esta utilizando la arquitectura
   i386, puesto que sobre ella son los ejemplos que vamos a ir exponiendo. Si
   no es este su caso debe hacer los cambios adecuados a su arquitectura de
   hardware en las rutas que vayamos utilizando.

  Nota:

   Si no existe el directorio /usr/src/sys en su sistema quiere decir que no
   estan instaladas las fuentes del kernel. La forma mas sencilla de tenerlas
   es mediante /stand/sysinstall. Como usuario root seleccione Configure,
   luego Distributions, despues src y finalmente sys. Si no le gusta mucho
   sysinstall y tiene acceso a un CDROM "oficial" de FreeBSD puede instalar
   las fuentes por medio de la siguiente linea de ordenes:

 # mount /cdrom
 # mkdir -p /usr/src/sys
 # ln -s /usr/src/sys /sys
 # cat /cdrom/sys/ssys.[a-d]* | tar -xzvf

   Ahora vaya al al directorio arch/conf y copie el fichero de configuracion
   GENERIC con el nombre que desee. Por ejemplo:

 # cd /usr/src/sys/i386/conf
 # cp GENERIC MIKERNEL

   Por tradicion el nombre se escribe con mayusuculas y si tiene varias
   maquinas FreeBSD, con diferente hardware es recomendable darle a cada
   kernel el mismo nombre que la maquina en la que va a ejecutarse. En este
   ejemplo usaremos el nombre de MIKERNEL .

  Sugerencia:

   Guardar su fichero de configuracion directamente bajo el directorio
   /usr/src, puede que no sea una idea muy astuta. Si empieza a tener
   problemas puede ser muy tentador borrar /usr/src y comenzar desde cero.
   Cinco segundos despues de haber hecho esto se dara cuenta de que ha
   eliminado el fichero de configuracion de su kernel, en el que quizas
   llevaba horas trabajando.

   Le proponemos una alternativa: guardar su fichero de configuracion
   cualquier otro sitio y crear un enlace simbolico al fichero que hay en el
   directorio i386.

   Por ejemplo:

 # cd /usr/src/sys/i386/conf
 # mkdir /root/kernels
 # cp GENERIC /root/kernels/MIKERNEL
 # ln -s /root/kernels/MIKERNEL

   Ahora edite el fichero de configuracion MIKERNEL con su editor de textos
   favorito. Si se trata de una instalacion reciente probablemente el unico
   editor disponible sea vi, del cual es complicado explicar su uso detallado
   en este documento, pero existen bastantes libros que detallan su uso;
   puede ver algunos en la bibliografia. FreeBSD dispone de un editor de uso
   muy sencillo, llamado ee; si es usted principiante le sera de mucha ayuda.
   Cambie los comentarios al principio del fichero con algo que refleje los
   cambios realizados o al menos para diferenciarlo del fichero GENERIC.

   Si ha compilado un kernel en SunOS(TM) o algun otro sistema operativo BSD
   seguramente la mayor parte de fichero le sera muy familiar. Si viene usted
   de otros sistemas operativos como DOS, el fichero GENERIC puede parecerle
   intimidante, asi que siga las instrucciones descritas en El Fichero de
   Configuracion detenidamente y con sumo cuidado.

  Nota:

   Asegurese siempre de verificar el fichero /usr/src/UPDATING antes de
   realizar cualquier actualizacion del sistema si ha sincronizado sus
   fuentes para disponer de la ultima version de los mismos. En el fichero
   /usr/src/UPDATING esta toda la informacion importante sobre las
   actualizaciones. Al distribuirse con FreeBSD dicha informacion debera
   estar mas actualizada que la que hay en este mismo texto.

   Ahora es momento de llevar a cabo la compilacion del codigo fuente del
   kernel.

   Procedimiento 8.1. Compilacion del kernel
    1. Vaya al directorio /usr/src:

 # cd /usr/src

    2. Compile el kernel:

 # make buildkernel KERNCONF=MIKERNEL

    3. Instale el nuevo kernel:

 # make installkernel KERNCONF=MIKERNEL

  Nota:

   Es imprescindible que disponga del codigo fuente completo de FreeBSD para
   poder compilar el kernel.

  Sugerencia:

   Por omision, si compila un kernel personalizado todos los modulos del
   kernel seran recompilados tambien. Si quiere que la actualizacion de su
   kernel sea mucho mas rapida o compilar solamente ciertos modulos
   personalizados, edite kernel modules will be rebuilt as well.
   /etc/make.conf antes de compilar el kernel:

 MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs

   Esta variable crea una lista de modulos listos para ser compilados, sin
   tocar los demas.

 WITHOUT_MODULES = linux acpi sound/sound sound/driver/ds1 ntfs

   Esta variable crea una lista de modulos que seran excluidos del proceso de
   compilacion. Hay otras variables que pueden resultarle utiles durante este
   proceso; consulte la pagina de manual de make.conf(5).

   El nuevo kernel se copiara al directorio raiz como /kernel y el kernel
   viejo tendra el nombre de /kernel.old. Ahora reinicie su sistema para
   poder probar su nuevo kernel. En caso de que se presente algun problema
   hay algunos consejos para la resolucion de problemas al final de este
   capitulo. Asegurese de leer la seccion que explica como recuperar el
   sistema en caso de que su kernel no quiera arrancar.

  Nota:

   Ciertos ficheros relacionados con el proceso de arranque, como loader(8)y
   su configuracion, se guardan en /boot. Los modulos personalizados o de
   terceros se suelen guardar en /boot/kernel, aunque debe tener presente que
   es muy importante que los modulos y el kernel esten sincronizados. Si
   intenta usar modulos con un kernel para el que no estan destinados puede
   haber errores o incluso producirse intesatabilidades.

8.6. El fichero de configuracion

   Actualizado a FreeBSD 6.X por Joel Dahl.

   El formato de un fichero de configuracion es bastante simple. Cada linea
   contiene una palabra clave con uno o mas argumentos. Para simplificar, hay
   muchas lineas que solamente contienen un argumento. Cualquier cosa detras
   de un # se considerara un comentario y en consecuencia sera ignorado. Las
   siguientes secciones describen todas las palabras clave en el orden en el
   que aparecen en GENERIC. Si quiere una lista exhaustiva de de opciones
   dependientes de arquitectura y de dispositivos puede consultar el fichero
   NOTES en el mismo directorio donde esta el fichero GENERIC. Si quiere ver
   las opciones independientes de arquitectura consulte
   /usr/src/sys/conf/NOTES.

  Nota:

   Puede generar un fichero que contenga todas las opciones disponibles en un
   kernel. Esto es algo que solamente se usa para hacer pruebas. Si quiere
   generarlo ejecute, como root, lo siguiente:

 # cd /usr/src/sys/i386/conf && make LINT

   A continuacion veremos un ejemplo de fichero de configuracion de un kernel
   GENERIC al que se han anadido comentarios adicionales donde se ha visto
   que era necesario abundar un poco para mayor claridad. Este ejemplo es
   igual (o, en el peor de los casos, casi igual) que la copia del mismo que
   tiene usted en /usr/src/sys/i386/conf/GENERIC.

 machine         i386

   Esta es la arquitectura de la maquina. Debe ser alpha, amd64, i386, ia64,
   pc98, powerpc o sparc64.

 cpu          I486_CPU
 cpu          I586_CPU
 cpu          I686_CPU

   Las opciones anteriores definen el tipo de CPU que haya en su sistema.
   Puede dejar varias lineas de CPU (si, por ejemplo, no esta seguro de usar
   I586_CPU o I686_CPU), pero si esta personalizando su kernel es mucho mejor
   que solamente ponga la CPU que tenga. Si no esta seguro de la CPU que
   tiene busque en los mensajes de arranque que se guardan en
   /var/run/dmesg.boot.

 ident          GENERIC

   Este es el identificador del kernel. Modifiquelo para que cuadre con el
   nombre que le haya dado a su kernel, es decir, MIKERNEL si ha seguido los
   ejemplos anteriores. El valor que asigne a la cadena ident sera el que se
   muestre cuando arranque con su kernel, asi que es util darle a su kernel
   un nombre distintivo que permita distinguirlo facilmente de otros, por
   ejemplo, si esta compilando un kernel experimental.

 #To statically compile in device wiring instead of /boot/device.hints
 #hints          "GENERIC.hints"         # Default places to look for devices.

   device.hints(5) se usa para configurar opciones de controladores de
   dispositivo. La ubicacion por defecto en la que loader(8) buscara durante
   el arranque es /boot/device.hints. Si usa la opcion hints puede compilar
   el contenido de device.hints en su kernel, lo que hara innecesario crear
   ese fichero en /boot.

 makeoptions     DEBUG=-g          # Build kernel with gdb(1) debug symbols

   El proceso normal de compilacion en FreeBSD incluye informacion de
   depuracion de errores si se compila un kernel con la opcion -g, que activa
   la informacion de depuracion de errores al pasar a gcc(1).

 options          SCHED_4BSD         # 4BSD scheduler

   El planificador de tareas tradicional y por omision de FreeBSD. Dejelo
   como esta.

 options          PREEMPTION         # Enable kernel thread preemption

   Permite que hilos que estan en el kernel puedan asociarse con hilos cuya
   prioridad sea mas alta. Ayuda con la interactividad y permite que los
   hilos interrumpidos puedan ejecutarse antes en lugar de tener que esperar.

 options          INET              # InterNETworking

   Networking. Deje esto como esta, incluso si no tiene en mente conectar la
   maquina a una red. Muchos programas necesitan al menos disponer de lo que
   se llama <<loopback networking>> (esto es, poder efectuar conexiones de
   red con su propia maquina) asi que tener esto es obligatorio.

 options          INET6             # IPv6 communications protocols

   Activa los protocolos de comunicacion IPv6.

 options          FFS               # Berkeley Fast Filesystem

   El sistema de ficheros basico para discos duros. Debe dejarlo como esta si
   pretende poder arrancar desde disco duro.

 options          SOFTUPDATES       # Enable FFS Soft Updates support

   Activa Soft Updates en el kernel, lo que acelerara los accesos de
   escritura a sus discos. Esta funcionalidad la facilita el kernel, pero
   debe activarse para cada disco de forma especifica. Revise la salida de
   mount(8) y vera si Soft Updates esta activado en los discos de su sistema.
   Si no aparece la opcion soft-updates activela mediante tunefs(8) (para
   sistemas de ficheros ya existentes) o newfs(8) (en el caso de sistemas de
   ficheros nuevos).

 options          UFS_ACL           # Support for access control lists

   Esta opcion activa en el kernel las listas de control de acceso. Consiste
   en el uso de atributos extendidos y UFS2 junto con las caracteristicas que
   se describen detalladamente en la Seccion 14.12, "Listas de control de
   acceso a sistemas de ficheros". Las ACL por omision estan activadas, y no
   deben desactivarse del kernel una vez que hayan sido usadas en un sistema
   de ficheros puesto que eliminara las listas de control de acceso y el modo
   en el que se protegen esos ficheros de un modo totalmente fuera de
   control.

 options          UFS_DIRHASH       # Improve performance on big directories

   This option includes functionality to speed up disk operations on large
   directories, at the expense of using additional memory. You would normally
   keep this for a large server, or interactive workstation, and remove it if
   you are using FreeBSD on a smaller system where memory is at a premium and
   disk access speed is less important, such as a firewall.

 options          MD_ROOT           # MD is a potential root device

   Esta opcion permite que la particion raiz este en un disco virtual basado
   en memoria.

 options          NFSCLIENT         # Network Filesystem Client
 options          NFSSERVER         # Network Filesystem Server
 options          NFS_ROOT          # NFS usable as /, requires NFSCLIENT

   NFS, el sistema de ficheros en red. Salvo que tenga intencion de montar
   particiones de sistemas de ficheros UNIX(R) de un servidor a traves de
   TCP/IP puede comentar estas opciones.

 options          MSDOSFS           # MSDOS Filesystem

   El sistema de ficheros MS-DOS(R). Salvo que tenga en mente montar
   particiones de disco duro con formato DOS durante el arranque puede
   comentar esta opcion. En caso de necesidad esta funcionalidad se cargara
   automaticamente. Tambien tiene a su emulators/mtools, que le permitira
   acceder a disquetes DOS sin tener que montarlos y desmontarlos (y ni
   siquiera requiere MSDOSFS).

 options          CD9660            # ISO 9660 Filesystem

   El sistema de ficheros ISO 9660 para CDROM. Comentelo si no tiene unidad
   CDROM o solamente monta CD muy de vez en cuando; cuando lo necesite el
   sistema lo cargara dinamicamente. Los CD de sonido no utilizan este
   sistema de ficheros.

 options          PROCFS            # Process filesystem (requires PSEUDOFS)

   El sistema de ficheros de procesos. Es un sistema de ficheros "simulado"
   que se monta en /proc y permite a programas como ps(1) suministrar mas
   informacion sobre que procesos estan ejecutandose. En la mayoaria de los
   casos no es necesario usar PROCFS, puesto que la mayoria de las
   herramientas de monitorizacion y depuracion han sido adaptadas para que
   funcionen sin PROCFS. De hecho aunque lo instale el sistema no lo montara
   por omision.

 options          PSEUDOFS          # Pseudo-filesystem framework

   Los kernel 6.X pueden usar PSEUDOFS al utilizar PROCFS.

 options          GEOM_GPT          # GUID Partition Tables.

   Con esta opcion se puede tener una gran cantidad de particiones en un
   unico disco.

 options          COMPAT_43         # Compatible with BSD 4.3 [KEEP THIS!]

   Compatibilidad con 4.3BSD. Dejelo como esta; ciertos programas pueden
   comportarse de formas muy extranas si comenta esta opcion.

 options          COMPAT_FREEBSD4   # Compatible with FreeBSD4

   FreeBSD 5.X en sistemas i386(TM) y Alpha necesita esta opcion para poder
   usar aplicaciones compiladas en versiones antiguas de FreeBSD que
   utilizan, por tanto, llamadas al sistema mas antiguas. Esta opcion no es
   necesaria en plataformas en las que funciona FreeBSD desde 5.X, como ia64
   y Sparc64(R).

 options          COMPAT_FREEBSD5   # Compatible with FreeBSD5

   Esta opcion hace falta en sistemas FreeBSD 6.X y versiones posteriores
   para poder ejecutar aplicaciones compiladas en FreeBSD 5.X, que usan
   interfaces de llamada al sistema FreeBSD 5.X.

 options          SCSI_DELAY=5000  # Delay (in ms) before probing SCSI

   Hace que el kernel haga una pausa de 5 segundos antes de probar los
   dispositivos SCSI del sistema. Si solamente tiene discos IDE puede ignorar
   esta opcion, o tambien puede asignarle un valor menos para evitar el
   retardo en el arranque. Si lo hace y FreeBSD tiene problemas para
   reconocer dispositivos SCSI en el sistema es obvio que tendra que
   incrementar el valor.

 options          KTRACE            # ktrace(1) support

   Activa las trazas en el kernel, algo muy util para la depuracion de
   errores.

 options          SYSVSHM           # SYSV-style shared memory

   Facilita memoria compartida System V. El uso mas habitual es la extension
   XSHM de X, que utiliza la mayoria de programas que hacen uso intensivo de
   los graficos para incrementar la velocidad. Si usa X es casi seguro que le
   vendra bien esta opcion.

 options          SYSVMSG           # SYSV-style message queues

   Mensajes System V. Esta opcion anade solamente unos cuantos bytes al
   kernel.

 options          SYSVSEM           # SYSV-style semaphores

   Semaforos System V. No es demasiado frecuente que se utilicen, pero
   solamente anaden unos cuantos cientos de bytes al kernel.

  Nota:

   La opcion -p de ipcs(1) le mostrara una lista de procesos que esten
   utilizando caracteristicas System V.

 options              _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions

   Extensiones en tiempo real anadidas en 1993 POSIX(R). Ciertas aplicaciones
   de la Coleccion de Ports las utilizan, por ejemplo StarOffice(TM).

 options          KBD_INSTALL_CDEV  # install a CDEV entry in /dev

   This option is required to allow the creation of keyboard device nodes in
   /dev.

 options          ADAPTIVE_GIANT    # Giant mutex is adaptive.

   Giant es un mecanismo de exclusion mutua (<<sleep mutex>>) que protege un
   gran conjunto de recursos del kernel. Hoy en dia no es asumible tener un
   cuello de botella asi por el impacto que tiene en el rendimiento, asi que
   esta siendo reemplazado por bloqueos que protegen los recursos de manera
   individual. ADAPTIVE_GIANT hace que Giant sea incluido en un conjunto de
   <<mutextes>> que va rotando Esto es, cuando un hilo quiere bloquear el
   Giant mutex (pero ya esta bloqueado por un hilo de otra CPU) el primer
   hilo seguira ejecutandose a la espera de que se libere el bloqueo.
   Generalmente el hilo volvera al estado de reposo y esperara hasta que
   aparezca otra oportunidad de ejecutarse. Si no esta seguro de lo que esta
   haciendo es mejor que deje esta opcion tal y como esta.

  Nota:

   Tenga en cuenta que en FreeBSD 8.0-CURRENT y versiones siguientes todos
   los <<mutexes>> son adaptables por omision, salvo que se use la opcion
   NO_ADAPTIVE_MUTEXES. El resultado evidente que es Giant es adaptable por
   omision, asi que la opcion ADAPTIVE_GIANT ha sido eliminada de la
   configuracion.

 device          apic               # I/O APIC

   El dispositivo apic activa la E/S APIC en la entrega de interrupciones. El
   dispositivo apic puede usarse tanto en kernels para un procesador (UP)
   como para sistemas multiprocesador (SMP). Si anada options SMP funcionara
   en sistemas multiprocesador.

  Nota:

   El dispositivo apic existe solamente en la arquitectura i386, de modo que
   no debe usarse esta linea en otras arquitecturas.

 device          eisa

   Use esta opcion si tiene una placa base EISA. Activa la deteccion
   automatica y permite la configuracion de todos los dispositivos que esten
   en el bus EISA.

 device          pci

   Use esta opcion si tiene una placa PCI. Permite la deteccion automatica de
   tarjetas PCI y permite la configuracion entre el bus ISA y el PCI.

 # Floppy drives
 device          fdc

   Este dispositivo es el controlador de la unidad de disquetes.

 # ATA and ATAPI devices
 device          ata

   Este controlador permite utilizar dispositivos ATA y ATAPI. Si anade al
   kernel one device ata este detectara cualquier dispositivo ATA/ATAPI PCI
   que conecte a una maquina moderna.

 device          atadisk                 # ATA disk drives

   Si usa device ata tendra que anadir tambien esto para poder usar unidades
   de disco ATA.

 device          ataraid                 # ATA RAID drives

   Si usa device ata tendra que anadir tambien esto para poder usar unidades
   de disco ATA RAID.

 device          atapicd                 # ATAPI CDROM drives

   Si usa device ata tendra que anadir tambien esto para poder usar unidades
   ATAPI CDROM.

 device          atapifd                 # ATAPI floppy drives

   Si usa device ata tendra que anadir tambien esto para poder usar unidades
   de disquete ATAPI.

 device          atapist                 # ATAPI tape drives

   Si usa device ata tendra que anadir tambien esto para poder usar unidades
   de cinta ATAPI.

 options         ATA_STATIC_ID           # Static device numbering

   Con esta opcion hace que el numero de controladores sea estatico; si no se
   usa los numeros de dispositivo se asignan dinamicamente.

 # SCSI Controllers
 device          ahb        # EISA AHA1742 family
 device          ahc        # AHA2940 and onboard AIC7xxx devices
 options         AHC_REG_PRETTY_PRINT    # Print register bitfields in debug
                                         # output.  Adds ~128k to driver.
 device          ahd        # AHA39320/29320 and onboard AIC79xx devices
 options         AHD_REG_PRETTY_PRINT    # Print register bitfields in debug
                                         # output.  Adds ~215k to driver.
 device          amd        # AMD 53C974 (Teckram DC-390(T))
 device          isp        # Qlogic family
 #device         ispfw      # Firmware for QLogic HBAs- normally a module
 device          mpt        # LSI-Logic MPT-Fusion
 #device         ncr        # NCR/Symbios Logic
 device          sym        # NCR/Symbios Logic (newer chipsets + those of `ncr')
 device          trm        # Tekram DC395U/UW/F DC315U adapters

 device          adv        # Advansys SCSI adapters
 device          adw        # Advansys wide SCSI adapters
 device          aha        # Adaptec 154x SCSI adapters
 device          aic        # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
 device          bt         # Buslogic/Mylex MultiMaster SCSI adapters

 device          ncv        # NCR 53C500
 device          nsp        # Workbit Ninja SCSI-3
 device          stg        # TMC 18C30/18C50

   Controladoras SCSI. Comentelas si no las tiene en su sistema. Si en su
   sistema tiene solamente unidades IDE puede borrarlas todas. Las lineas
   *_REG_PRETTY_PRINT son opciones de depuracion de errores de sus
   respectivos controladores de dispositivo.

 # SCSI peripherals
 device          scbus      # SCSI bus (required for SCSI)
 device          ch         # SCSI media changers
 device          da         # Direct Access (disks)
 device          sa         # Sequential Access (tape etc)
 device          cd         # CD
 device          pass       # Passthrough device (direct SCSI access)
 device          ses        # SCSI Environmental Services (and SAF-TE)

   Perifericos SCSI. Estos tambien puede borrarlos sin problemas si no los
   tiene en su sistema o si solamente tiene hardware IDE.

  Nota:

   El controlador USB umass(4) (y unos cuantos controladores mas) utilizan el
   subsistema SCSI aunque no sean dispositivos SCSI reales. No elimine el
   subsistema SCSI del kernel si va a utilizar cualquiera de estos
   controladores.

 # RAID controllers interfaced to the SCSI subsystem
 device          amr        # AMI MegaRAID
 device          arcmsr     # Areca SATA II RAID
 device          asr        # DPT SmartRAID V, VI and Adaptec SCSI RAID
 device          ciss       # Compaq Smart RAID 5*
 device          dpt        # DPT Smartcache III, IV - See NOTES for options
 device          hptmv      # Highpoint RocketRAID 182x
 device          rr232x     # Highpoint RocketRAID 232x
 device          iir        # Intel Integrated RAID
 device          ips        # IBM (Adaptec) ServeRAID
 device          mly        # Mylex AcceleRAID/eXtremeRAID
 device          twa        # 3ware 9000 series PATA/SATA RAID

 # RAID controllers
 device          aac        # Adaptec FSA RAID
 device          aacp       # SCSI passthrough for aac (requires CAM)
 device          ida        # Compaq Smart RAID
 device          mfi        # LSI MegaRAID SAS
 device          mlx        # Mylex DAC960 family
 device          pst        # Promise Supertrak SX6000
 device          twe        # 3ware ATA RAID

   Controladoras RAID que pueden utilizarse en FreeBSD. Si no las tiene en su
   sistema puede borrarlas.

 # atkbdc0 controls both the keyboard and the PS/2 mouse
 device          atkbdc     # AT keyboard controller

   El controlador de teclado (atkbdc) ofrece servicios de E/S con teclados AT
   y ratones PS/2. El controlador de teclado (atkbd) y el controlador de
   raton PS/2 (psm) necesitan este dispositivo.

 device          atkbd      # AT keyboard

   El controlador atkbd, junto con el controlador atkbdc, permiten utilizar
   el teclado AT 84 u otros tipos de teclados AT mejorados que se conecten
   mediante el controlador de teclado AT.

 device          psm        # PS/2 mouse

   Utilice este dispositivo si conecta su raton en el puerto PS/2.

 device          kbdmux        # keyboard multiplexer

   Funcionalidad basica para multiples teclados. Si no tiene en mente usar
   mas de un teclado en el sistema puede borrar esta linea sin mayor
   problema.

 device          vga        # VGA video card driver

   El controlador de la tarjeta grafica.

 device          splash     # Splash screen and screen saver support

   <<Splash screen>> en el arranque. Los salvapantallas necesitan este
   dispositivo.

 # syscons is the default console driver, resembling an SCO console
 device          sc

   sc por omision es el controlador de dispositivo de la consola; se parece
   mucho a una consola de SCO. Dado que muchos programas de pantalla completa
   acceden a la consola a traves de la biblioteca de bases de datos de
   terminal termcap no tiene demasiada importancia si usa vt, el controlador
   de consola compatible VT220. Cuando acceda al sistema asigne a su variable
   TERM el valor scoansisi los programas a pantalla completa tienen algun
   problema para acceder a la consola.

 # Enable this for the pcvt (VT220 compatible) console driver
 #device          vt
 #options         XSERVER          # support for X server on a vt console
 #options         FAT_CURSOR       # start with block cursor

   El controlador de dispositivo VT220-compatible; es compatible con
   VT100/102, anterior a el. Funciona bien en ciertos sistemas portatiles que
   adolecen de incompatibilidad de harware con sc. Asigne a su variable de
   entorno TERM el valor vt100 o vt220 cuando acceda al sistema. Este
   controlador le puede ser de utilidad si tiene que acceder a gran cantidad
   de maquinas a traves de una red, una situacion en la que suele suceder que
   termcap o terminfo no estan ahi para que las use sc. vt100, por el
   contrario, deberia aparecer en praticamente cualquier plataforma.

 device          agp

   Utilice esta opcion si tiene en el sistema una tarjeta AGP. Activara AGP y
   tambien AGP GART si su tarjeta puede usarla.

 # Power management support (see NOTES for more options)
 #device          apm

   Gestion avanzada de la energia. Muy util en sistemas portatiles. Viene
   desactivada por omision en el kernel GENERIC .

 # Add suspend/resume support for the i8254.
 device           pmtimer

   Controlador del reloj para eventos de gestion de la energia, como APM y
   ACPI.

 # PCCARD (PCMCIA) support
 # PCMCIA and cardbus bridge support
 device          cbb               # cardbus (yenta) bridge
 device          pccard            # PC Card (16-bit) bus
 device          cardbus           # CardBus (32-bit) bus

   Dispositivos PCMCIA. Si el sistema es portatil necesita tener esto
   activado.

 # Serial (COM) ports
 device          sio               # 8250, 16[45]50 based serial ports

   Estos son los puertos serie a los que se conoce como puertos COM en
   entornos MS-DOS(R)/Windows(R).

  Nota:

   Si tiene un modem interno en COM4 un puerto serie en COM2 tendra que
   asignar a la IRQ del modem el 2 (por razones tecnicas ignotas IRQ2 = IRQ
   9) para que pueda acceder al dispositivo desde FreeBSD. Si tiene una
   tarjeta serie multipuerto consulte la pagina de manual de sio(4) si quiere
   mas detalles sobre los valores que debe anadir a /boot/device.hints.
   Algunas tarjetas graficas (sobre todo las que usan chips S3) utilizan
   direcciones IO del tipo 0x*2e8 y dado que muchas tarjetas serie de baja
   calidad no decodifican correctamente el espacio de direcciones de 16 bits
   chocan con estas tarjetas, haciendo que el puerto COM4 sea practicamente
   inutil.

   Es necesario que cada puerto serie tenga una IRQ unica (salvo que use una
   tarjeta multipuerto que permita compartir interrupciones), asi que las IRQ
   de COM3 y de COM4 no se pueden utilizar.

 # Parallel port
 device          ppc

   El interfaz del puerto paralelo de bus ISA.

 device          ppbus      # Parallel port bus (required)

   El bus del puerto paralelo.

 device          lpt        # Printer

   Permite usar el puerto paralelo para conectar impresoras.

  Nota:

   Necesitara disponer de los tres anteriores para poder utilizar impresoras
   mediante el puerto paralelo.

 device          plip       # TCP/IP over parallel

   Este controlador es para la interfaz de red a traves del puerto paralelo.

 device          ppi        # Parallel port interface device

   La E/S de proposito general (conocida tambien como "puerto geek") + E/S
   IEEE1284.

 #device         vpo        # Requires scbus and da

   Este dispositivo se usa con unidades Iomega Zip. Necesita scbus y da . El
   mejor rendimiento se alcanza con el uso de los puertos en modo EPP 1.9.

 #device         puc

   Puede utilizar este dispositivo si tiene una tarjeta PCI "tonta" (por
   puerto serie o paralelo) que funcione mediante el controlador puc(4).

 # PCI Ethernet NICs.
 device          de         # DEC/Intel DC21x4x ("Tulip")
 device          em         # Intel PRO/1000 adapter Gigabit Ethernet Card
 device          ixgb       # Intel PRO/10GbE Ethernet Card
 device          txp        # 3Com 3cR990 ("Typhoon")
 device          vx         # 3Com 3c590, 3c595 ("Vortex")

   Diversos controladores para tarjetas de red PCI. Puede borrar todas las
   que no esten en su sistema.

 # PCI Ethernet NICs that use the common MII bus controller code.
 # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
 device          miibus     # MII bus support

   El poder utilizar bus MII es necesario para ciertas tarjetas Ethernet PCI
   10/100, mas concretamente las que usan transceptores compatibles con MII o
   implementan interfaces de control de transceptores que funcionan como si
   fueran MII. Si incluye device miibus al kernel dispondra de la API miibus
   generica y todos los controladores PHY, incluyendo uno que hara funcionar
   hardware que, siendo del tipo PHY, no esta bajo ninguno de los
   controladores PHY especificos.

 device          bce        # Broadcom BCM5706/BCM5708 Gigabit Ethernet
 device          bfe        # Broadcom BCM440x 10/100 Ethernet
 device          bge        # Broadcom BCM570xx Gigabit Ethernet
 device          dc         # DEC/Intel 21143 and various workalikes
 device          fxp        # Intel EtherExpress PRO/100B (82557, 82558)
 device          lge        # Level 1 LXT1001 gigabit ethernet
 device          msk        # Marvell/SysKonnect Yukon II Gigabit Ethernet
 device          nge        # NatSemi DP83820 gigabit ethernet
 device          nve        # nVidia nForce MCP on-board Ethernet Networking
 device          pcn        # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
 device          re         # RealTek 8139C+/8169/8169S/8110S
 device          rl         # RealTek 8129/8139
 device          sf         # Adaptec AIC-6915 ("Starfire")
 device          sis        # Silicon Integrated Systems SiS 900/SiS 7016
 device          sk         # SysKonnect SK-984x & SK-982x gigabit Ethernet
 device          ste        # Sundance ST201 (D-Link DFE-550TX)
 device          stge       # Sundance/Tamarack TC9021 gigabit Ethernet
 device          ti         # Alteon Networks Tigon I/II gigabit Ethernet
 device          tl         # Texas Instruments ThunderLAN
 device          tx         # SMC EtherPower II (83c170 "EPIC")
 device          vge        # VIA VT612x gigabit ethernet
 device          vr         # VIA Rhine, Rhine II
 device          wb         # Winbond W89C840F
 device          xl         # 3Com 3c90x ("Boomerang", "Cyclone")

   Controladores que utilizan el codigo del controlador de bus MII.

 # ISA Ethernet NICs.  pccard NICs included.
 device          cs         # Crystal Semiconductor CS89x0 NIC
 # 'device ed' requires 'device miibus'
 device          ed         # NE[12]000, SMC Ultra, 3c503, DS8390 cards
 device          ex         # Intel EtherExpress Pro/10 and Pro/10+
 device          ep         # Etherlink III based cards
 device          fe         # Fujitsu MB8696x based cards
 device          ie         # EtherExpress 8/16, 3C507, StarLAN 10 etc.
 device          lnc        # NE2100, NE32-VL Lance Ethernet cards
 device          sn         # SMC's 9000 series of Ethernet chips
 device          xe         # Xircom pccard Ethernet

 # ISA devices that use the old ISA shims
 #device         le

   Controladores Ethernet ISA. Consulte /usr/src/sys/i386/conf/NOTES para mas
   detalles sobre que tarjetas hace funcionar que controlador.

 # Wireless NIC cards
 device          wlan            # 802.11 support

   802.11 generico. Necesitara esta linea si va a usar redes inalambricas.

 device          wlan_wep        # 802.11 WEP support
 device          wlan_ccmp       # 802.11 CCMP support
 device          wlan_tkip       # 802.11 TKIP support

   Criptografia en dispositivos 802.11. Necesita estas lineas si quiere
   utilizar criptografia y protocolos de seguridad 802.11.

 device          an         # Aironet 4500/4800 802.11 wireless NICs.
 device          ath             # Atheros pci/cardbus NIC's
 device          ath_hal         # Atheros HAL (Hardware Access Layer)
 device          ath_rate_sample # SampleRate tx rate control for ath
 device          awi        # BayStack 660 and others
 device          ral        # Ralink Technology RT2500 wireless NICs.
 device          wi         # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
 #device         wl         # Older non 802.11 Wavelan wireless NIC.

   Diversas tarjetas inalambricas.

 # Pseudo devices
 device   loop          # Network loopback

   El dispositivo de <<loopback>> para TCP/IP. Si accede por telnet o FTP or
   FTP to localhost tambien conocido como 127.0.0.1) lo hara a traves de este
   dispositivo. Es imprescindible tenerlo en el sistema.

 device   random        # Entropy device

   Generador de numeros criptograficamente seguro.

 device   ether         # Ethernet support

   ether solo es necesario si tiene alguna tarjeta Ethernet. Incluye codigo
   generico del protocolo Ethernet.

 device   sl            # Kernel SLIP

   sl permite utilizar SLIP. Ha sido sustituido casi totalmente por PPP, que
   es mas facil de usar, esta mejor capacitado para la conexion de modem a
   modem y es, en general, claramente mejor.

 device   ppp           # Kernel PPP

   Este dispositivo incluye en el kernel la capacidad de gestionar conexiones
   de llamada entrante <<dial-up>>. Hay tambien una version de PPP
   implementada como aplicacion de usuario; utiliza tun y ofrece mas
   flexibilidad y caracteristicas como la llamada bajo peticion.

 device   tun           # Packet tunnel.

   Este dispositivo lo usa el software PPP de usuario. Consulte la seccion
   sobre PPP de este mismo libro.

 device   pty           # Pseudo-ttys (telnet etc)

   Este dispositivo es una "pseudoterminal", o un puerto de entrada al
   sistema simulado. Se usa en sesiones entrantes de telnet y rlogin; tambien
   lo usan xterm y otras aplicaciones, entre las que encontramos a Emacs.

 device   md            # Memory "disks"

   Pseudodispositivos de disco basados en memoria.

 device   gif           # IPv6 and IPv4 tunneling

   Este dispositivo implementa tuneles de IPv6 sobre IPv4, IPv4 sobre IPv6,
   IPv4 sobre IPv4 e IPv6 sobre IPv6. El dispositivo gif se puede clonar a si
   mismo, asi que los nodos de dispositivo se van creando a medida que van
   haciendo falta.

 device   faith         # IPv6-to-IPv4 relaying (translation)

   Este pseudodispositivo captura paquetes que se le hayan enviado y los
   dirige hacia el daemon de traduccion IPv4/IPv6.

 # The `bpf' device enables the Berkeley Packet Filter.
 # Be aware of the administrative consequences of enabling this!
 # Note that 'bpf' is required for DHCP.
 device   bpf           # Berkeley packet filter

   El filtro de paquetes de Berkeley. Este pseudodispositivo permite poner
   interfaces de red en modo promiscuo, lo que significa que capturan todos
   los paquetes que circulen por una red broadcast (por ejemplo una
   Ethernet). Dichos paquetes pueden guardarse en disco para su posterior
   examen mediante tcpdump(1) (el analisis con tcpdump(1) no puede hacerse
   directamente tambien).

  Nota:

   El dispositivo bpf(4) tambien lo usa dhclient(8) para obtener direcciones
   IP del encaminador (gateway) por omision. Si usa DHCP deje esta opcion
   como esta.

 # USB support
 device          uhci          # UHCI PCI->USB interface
 device          ohci          # OHCI PCI->USB interface
 device          ehci          # EHCI PCI->USB interface (USB 2.0)
 device          usb           # USB Bus (required)
 #device         udbp          # USB Double Bulk Pipe devices
 device          ugen          # Generic
 device          uhid          # "Human Interface Devices"
 device          ukbd          # Keyboard
 device          ulpt          # Printer
 device          umass         # Disks/Mass storage - Requires scbus and da
 device          ums           # Mouse
 device          ural          # Ralink Technology RT2500USB wireless NICs
 device          urio          # Diamond Rio 500 MP3 player
 device          uscanner      # Scanners
 # USB Ethernet, requires mii
 device          aue           # ADMtek USB Ethernet
 device          axe           # ASIX Electronics USB Ethernet
 device          cdce          # Generic USB over Ethernet
 device          cue           # CATC USB Ethernet
 device          kue           # Kawasaki LSI USB Ethernet
 device          rue           # RealTek RTL8150 USB Ethernet

   Diversos dispositivos USB.

 # FireWire support
 device          firewire      # FireWire bus code
 device          sbp           # SCSI over FireWire (Requires scbus and da)
 device          fwe           # Ethernet over FireWire (non-standard!)

   Diversos dispositivos Firewire.

   Tiene mas informacion y una lista con mas dispositivos que funcionan en
   FreeBSD consulte /usr/src/sys/i386/conf/NOTES.

  8.6.1. Configuraciones con grandes cantidades de memoria (PAE)

   Las maquinas que tienen configuraciones con grandes cantidades de memoria
   necesitan acceder a mas de 4 gigabytes de espacio de direcciones KVA
   (User+Kernel Virtual Address). Debido a esta limitacion Intel anadio a las
   CPU Pentium(R) Pro y modelos posteriores la posibilidad de acceso al
   espacio de direcciones fisicas de 36 bits.

   PAE (Physical Address Extension) a las CPU Intel(R) Pentium(R) Pro y los
   modelos posteriores configuraciones de memoria de hasta 64 gigabytes. Para
   poder aprovechar esto en FreeBSD existe la opcion del kernel PAE,
   disponible en todas las versiones modernas de FreeBSD. A causa de esta
   limitacion de memoria en los Intel no hay nada que distinga de algun modo
   la memoria situada por debajo del limite de los 4 gigabytes. La memoria
   que este por encima de los 4 gigabytes se coloca en el <<pool>> de memoria
   disponible.

   Si quiere activar PAE en el kernel tiene que anadir la siguiente liinea al
   fichero de configuracion del kernel:

 options             PAE

  Nota:

   En FreeBSD PAE solamente existe en procesadores Intel(R) IA-32. Hemos de
   advertirle de que PAE no ha sido probado todo lo necesario, asi que debe
   considerarse de calidad beta, sobre todo si se le compara con otras
   caracteristicas de FreeBSD.

   PAE en FreeBSD tiene varias limitaciones:

     * Un solo proceso no puede acceder a mas de 4 gigabytes de espacio VM.

     * No puede cargar modulos KLD en un kernel que tenga PAE activado debido
       a las diferencias existentes entre el <<framework>> de compilacion del
       modulo y el del kernel mismo.

     * Los controladores de dispositivo que utilizan el interfaz bus_dma(9)
       pueden provocar corrupcion de datos en un kernel con PAE activado, una
       excelente razon para no utilizarlos. Esta es la razon de que FreeBSD
       incorpore un fichero de configuracion de un kernel PAE del que se han
       extraido todos los modulos que se sabe que no funcionan en un kernel
       con PAE activado.

     * Algunos <<system tunables>> determinan el uso de recursos de memoria
       basandose en la memoria fisica disponible. Estos <<tunables>> pueden
       asignar mas memoria de la que realmente debieran debido a que el
       sistema PAE esta intimamente ligado a cantidades bastante importantes
       de memoria. Un ejemplo de esto es la sysctl kern.maxvnodes, que
       controla el numero maximo de vnodes permitidos en el kernel. Le
       recomendamos que ajuste este y otros tunables dentro valores
       razonables.

     * Es posible que tenga que aumentar el espacio virtual de direcciones
       del kernel (el KVA) o reducir la cantidad de recursos exclusivos del
       kernel que se utilicen exhaustivamente (ver mas arriba) para evitar
       que KVA literalmente se ahogue. La opcion del kernel KVA_PAGES permite
       incrementar el espacio KVA.

   Si quiere saber mas sobre la estabilidad del sistema consulte la pagina de
   manual de tuning(7). La pagina de manual de pae(4) contiene informacion
   actualizada sobre PAE y FreeBSD.

8.7. Que hacer si algo va mal

   Hay cuatro categorias de problemas que podemos encontrarnos en el proceso
   de compilacion de un kernel personalizado:

   Fallo de config:

           Si config(8) falla cuando le pasa la descripcion de su kernel
           seguramente ha cometido algun pequeno error. Por suerte config(8)
           les mostrara el numero de la linea que le esta dando problemas,
           asi que no tendra mayor problema para localizarla. Veamos un
           ejemplo:

 config: line 17: syntax error

           Si ve algo asi asegurese de que ha tecleado la palabra clave que
           hay en esa lina. Compare la de su fichero de configuracion del
           kernel con la de GENERIC.

   Fallo de make:

           If the make command fails, it usually signals an error in your
           kernel description which is not severe enough for config(8) to
           catch. Again, look over your configuration, and if you still
           cannot resolve the problem, send mail to the lista de correo para
           preguntas generales sobre FreeBSD with your kernel configuration,
           and it should be diagnosed quickly.

   El kernel no arranca:

           Si su nuevo kernel no arranca o no reconoce sus dispositivos de
           hardware no desespere. FreeBSD dispone de excelentes mecanismos de
           recuperacion ante kernels defectuosos. Elija el kernel con el que
           quiere arrancar en el gestor de arranque de FreeBSD. Puede acceder
           al gestor de arranque en el momento en el que aparece el menu de
           arranque. Elija la opcion numero seis, "Escape to a loader prompt"
           option, Escriba en el prompt unload kernel y despues escriba boot
           /boot/kernel.old/kernel, o el nombre de cualquier otro kernel que
           tenga en el sistema y del que sepa que puede fiarse. Si va a
           reconfigurar un kernel es una buenisima idea guardar un kernel que
           sepa que funciona.

           Tras arrancar con un kernel de fiar verifique el fichero de
           configuracion e intente de nuevo una compilacion. El fichero
           /var/log/messages es una fuente de informacion muy valiosa puesto
           que registra, entre otras cosas, todos los mensajes que deja el
           kernel cada vez que hay un arranque satisfactorio. dmesg(8) le
           mostrara los mensajes que el kernel ha generado durante el ultimo
           arranque.

  Nota:

           Si tiene problemas compilando un kernel recuerde que es de vital
           importancia que guarde una copia de un kernel GENERIC u otro del
           que pueda fiarse y que (esto es muy importante) tenga un nombre
           distinto de kernel.old para evitar que el sistema lo borre una vez
           que termine una nueva compilacion. No puede confiar en su kernel
           kernel.old porque al instalar un nuevo kernel (que aun no sabe si
           sera el que funcione tal y como espera de el) el kernel kernel.old
           se sobreescribe con el kernel que instale. Otra cosa importante es
           que copie ese kernel de fiar a /boot/kernel, o ciertas
           herramientas como ps(1) no funcionaran. Basta con que haga lo
           siguiente:

 # mv /boot/kernel /boot/kernel.malo
 # mv /boot/kernel.bueno /boot/kernel

   El kernel funciona, pero ps(1) no:

           Si el kernel que tiene instalado es de una version de FreeBSD y
           las utilidades del sistema son de otra, por ejemplo un kernel
           -CURRENT en una -RELEASE, hay muchas herramientas de
           monitorizacion del sistema como ps(1) y vmstat(8) no funcionaran.
           Ejecute un make buildworld y un make install world con la misma
           version de codigo fuente con la que ha compilado su kernel. Esta
           es una de las razones por las que no es una idea demasiado buena
           utilizar versiones diferentes de kernel y de sistema operativo.

Capitulo 9. Imprimir

   Escrito por Sean Kelly.
   Reestructurado y actualizado por Jim Mock.
   Tabla de contenidos

   9.1. Sinopsis

   9.2. Introduccion

   9.3. Configuracion basica

   9.4. Configuracion avanzada de impresoras

   9.5. Como utilizar impresoras

   9.6. Alternativas a LPD

   9.7. Solucion de problemas

9.1. Sinopsis

   FreeBSD puede utilizarse para imprimir en una gran variedad de impresoras,
   desde las antiguas impresoras de matriciales hasta las mas modernas
   impresoras laser y todo lo que existe entre unas y otras, con lo que podra
   imprimir con una calidad muy alta desde cualquier aplicacion.

   FreeBSD puede usarse tambien como servidor de impresion en red; FreeBSD
   puede recibir peticiones de impresion de una gran cantidad de sistemas,
   bien sean FreeBSD, Windows(R) y Mac OS(R). FreeBSD se encarga de los
   trabajos se vayan imprimiendo uno tras otro y puede mantener estadisticas
   sobre que usuarios y que maquinas estan imprimiendo mas, generar paginas
   de <<encabezado>> para colocarlas antes de cada trabajo y distinguir asi
   de quien es la impresion, etc.

   Tras leer el presente capitulo sabra usted:

     * Como configurar la cola de impresion en FreeBSD.

     * Como instalar filtros de impresion para gestionar diversos trabajos
       especiales como la conversion de documentos a formatos aptos para su
       impresora.

     * Como habilitar encabezados en sus impresiones.

     * Como imprimir en impresoras conectadas a otras maquinas.

     * Como imprimir en impresoras conectadas directamente a la red.

     * Como controlar restricciones de impresion, como por ejemplo
       limitaciones del tamano de trabajos o evitar que ciertos usuarios
       puedan imprimir.

     * Como mantener estadisticas de impresion y cuentas de usuario de
       impresion.

     * Como solucionar los problemas de impresion mas comunes.

   Antes de leer este capitulo usted deberia:

     * Saber como compilar e instalar un kernel personalizado (Capitulo 8,
       Configuracion del kernel de FreeBSD).

9.2. Introduccion

   Si quiere utilizar impresoras con FreeBSD debe configurarlas de forma que
   funcionen con el sistema de cola de impresion de Berkeley, tambien
   conocido como sistema de cola LPD. Es el sistema de control de impresion
   estandar en FreeBSD. Este capitulo trata sobre el sistema LPD, al que en
   adelante nos referiremos simplemente como LPD, y le introducira en la
   configuracion del mismo.

   Si esta familiarizado con el sistema de cola de impresion LPD, o bien con
   algun otro sistema de impresion, puede pasar a la seccion Configuracion
   del sistema de cola de impresion.

   LPD se encarga de controlar todo lo relacionado con la impresion, lo que
   en consecuencia implica encargarse de lo siguiente:

     * Controlar el acceso a las impresoras conectadas directamente al
       sistema y a impresoras conectadas a otras maquinas de la red.

     * Permitir que ciertos usuarios puedan enviar ficheros para su
       impresion; estos envios reciben el nombre de trabajos ("jobs").

     * Evita que usuarios diferentes accedan a la impresora al mismo tiempo
       manteniendo un orden estricto en la cola de impresion de cada
       impresora.

     * Imprimir encabezados de forma que los usuarios puedan distinguir
       facilmente los trabajos que han impreso.

     * Se ocupa de los parametros para impresoras conectadas a puertos serie.

     * Enviar trabajos de impresion a traves de una red a la cola LPD de una
       maquina remota.

     * Ejecutar filtros especiales para formatear trabajos que requieren la
       gestion de lenguajes de impresion o impresoras de diferentes
       caracteristicas.

     * Mantener un registro del uso de la impresora.

   Gracias al fichero de configuracion (/etc/printcap) y mediante programas
   especiales de filtrado puede hacerse que el sistema LPD cumpla todas las
   tareas citadas o si lo prefiere solo unas cuantas; ademas puede hacerlo en
   una gran variedad de impresoras.

  9.2.1. ?Por que utilizar una cola de impresion?

   Si es usted la unica persona que usa el sistema se estara por que
   preocuparse de utilizar un sistema de cola de impresion si es evidente que
   no necesita restricciones de acceso, encabezados ni cuentas de impresion.
   Puede utilizar el acceso directo a impresion, pero deberia utilizar una
   cola de impresion por las siguientes razones:

     * El sistema LPD ejecuta los trabajos en segundo plano, esto es, no
       tiene que esperar a que la impresora procese los datos para seguir
       trabajando.

     * LPD puede procesar un trabajo de forma que pase por filtros, anadir
       cabeceras de fecha y hora o convertir un fichero de formato especial
       (por ejemplo TeX DVI) a un formato que la impresora entienda y que no
       tenga usted que ocuparse de ello manualmente.

     * Muchos programas, tanto libres como comerciales, desde los que se
       puede imprimir estan hechos pensando en que haya disponible un sistema
       de impresion. Una vez que configure un sistema de colas podra utilizar
       software que ya tiene instalado y preparar el campo para el que
       instale en el futuro.

9.3. Configuracion basica

   Pendiente de traduccion.

9.4. Configuracion avanzada de impresoras

   Pendiente de traduccion

9.5. Como utilizar impresoras

   Pendiente de traduccion.

9.6. Alternativas a LPD

   Pendiente de traduccion

9.7. Solucion de problemas

   Pendiente de traduccion

Capitulo 10. Compatibilidad binaria con Linux

   Reestructurado y actualizado por Jim Mock.
   Escrito por Brian N. Handy y Rich Murphey.
   Tabla de contenidos

   10.1. Sinopsis

   10.2. Instalacion

   10.3. Instalacion de Mathematica(R)

   10.4. Instalacion de Maple(TM)

   10.5. Instalacion de MATLAB(R)

   10.6. Instalacion de Oracle(R)

   10.7. Instalacion de SAP(R) R/3(R)

   10.8. Temas avanzados

10.1. Sinopsis

   FreeBSD proporciona compatibilidad de binarios con muchos otros sistemas
   operativos tipo UNIX(R), incluyendo Linux. Puede estarse preguntando ?por
   que necesita FreeBSD ejecutar binarios de Linux? La respuesta a esa
   pregunta es muy simple. Muchos desarrolladores y companias desarrollan
   solo para Linux, ya que ultimamente es el blanco de todas las miradas
   dentro del mundo de las tecnologis de la informacion. Esto hace que la
   comunidad FreeBSD tenga que exigir a esas companias y desarrolladores que
   produzcan versiones nativas de sus aplicaciones para FreeBSD. El problema
   es que la mayoria de esas companias no suelen saber realmente cuanta gente
   utilizaria su producto si existieran esas versiones para FreeBSD, y la
   mayoria continua desarrollando unicamente para Linux. Vista la situacion
   ?que puede hacer un usuario de FreeBSD? Aqui es donde entra en juego la
   compatibilidad binaria con Linux.

   Para expresarlo en pocas palabras, dicha compabitilidad permite a los
   usuarios de FreeBSD cerca del 90% de las aplicaciones de Linux sin tener
   que modificarlas en absoluto. Entre estas esta StarOffice(TM), la version
   Linux de Netscape(R), Adobe(R) Acrobat(R), RealPlayer, VMware, Oracle(R),
   WordPerfect, Doom, Quake y muchas mas. En determinados casos los binarios
   Linux rinden mejor en FreeBSD que en Linux.

   Existen, por desgracia, ciertas caracteristicas especificas de Linux que
   no funcionan en FreeBSD. Los binarios Linux no funcionaran en FreeBSD si
   recurren a llamadas especificas de i386(TM) como la activacion del modo
   virtual 8086.

   Tras leer este capitulo sabra usted:

     * como activar la compatibilidad binaria con Linux en su sistema.

     * como instalar bibliotecas compartidas de Linux que pueda necesitar.

     * como instalar aplicaciones de Linux en su sistema FreeBSD.

     * cuales son los detalles de la implementacion de compatibilidad binaria
       con Linux en FreeBSD.

   Antes de leer este capitulo es necesario que sepa:

     * como instalar software de terceros (Capitulo 4, Instalacion de
       aplicaciones: <<packages>> y ports).

10.2. Instalacion

   La compatibilidad binaria con Linux no viene activada por omision. La
   forma mas sencilla de habilitarla es cargar el KLD ("objeto cargable en el
   kernel") linux. Como usuario root proceda del siguiente modo:

 # kldload linux

   Si quiere que la compatibilidad con Linux este siempre activada tendra que
   anadir la siguiente linea en /etc/rc.conf:

 linux_enable="YES"

   Utilice kldstat(8) para verificar que el KLD este cargado:

 % kldstat
 Id Refs Address    Size     Name
  1    2 0xc0100000 16bdb8   kernel
  7    1 0xc24db000 d000     linux.ko

   Si por alguna razon no desea o no puede cargar el KLD, entonces puede
   enlazar estaticamente la compatibilidad de binarios Linux en el kernel
   agregando options COMPAT_LINUX a su fichero de configuracion del kernel.
   Luego instale su nuevo kernel como se describe en Capitulo 8,
   Configuracion del kernel de FreeBSD.

  10.2.1. Instalacion de bibliotecas de ejecucion Linux

   Puede hacerse de dos maneras, ya sea usando el port linux_base, o
   instalandolas de forma manual.

    10.2.1.1. Instalacion usando el port linux_base

   Este es con mucho el metodo mas sencillo para instalar bibliotecas de
   ejecucion. Es como instalar cualquier otro port de la Coleccion de Ports.
   Es tan sencillo como esto:

 # cd /usr/ports/emulators/linux_base
 # make install distclean

   Hecho esto deberia disponer de compatibilidad binaria con Linux. Algunos
   programas pueden "quejarse" por la presencia de versiones antiguas de
   algunas bibliotecas del sistema. Generalmente esto no suele ser un
   problema muy grave.

  Nota:

   Pueden coexistir multiples versiones del port emulators/linux_base
   disponibles correspondientes a distintas versiones de diversas
   distribuciones de Linux. Tendra que instalar el port que mas se ajuste a
   las necesidades de las aplicaciones de Linux que quiera instalar.

    10.2.1.2. Instalacion manual de bibliotecas

   Si, por el motivo que fuese, no tiene instalada la coleccion de ports
   puede instalar las bibliotecas que necesite de forma manual. Necesitara
   las bibliotecas compartidas Linux de las que depende el programa y el
   enlazador en tiempo de ejecucion ("runtime linker"). Necesitara tambien
   crear un directorio /compat/linux donde alojar las bibliotecas Linux en su
   sistema FreeBSD Cualquier biblioteca compartida a la que haya recurrido un
   programa de Linux ejecutado en FreeBSD buscara en primer lugar en dicho
   directorio. Por lo tanto, si se carga un programa Linux, por ejemplo
   /lib/libc.so, FreeBSD intentara en primer lugar abrir
   /compat/linux/lib/libc.so y, si no existe, lo intentara con /lib/libc.so.
   Las bibliotecas compartidas deben instalarse en /compat/linux/lib en lugar
   de las rutas que el ld.so de Linux proporcione.

   En general, necesitara buscar las bibliotecas compartidas de las que los
   binarios Linux dependen solamente las primeras veces que instale un
   programa Linux en su FreeBSD. Mas adelante tendra un conjunto suficiente
   de bibliotecas compartidas Linux en su sistema para poder ejecutar
   binarios Linux sin que tenga que hacer nada mas.

    10.2.1.3. Como instalar bibliotecas compartidas adicionales

   ?Que pasaria si instalara el port linux_base y su aplicacion todavia
   tuviera problemas debido a bibliotecas compartidas que no encuentra en el
   sistema? ?Como saber que bibliotecas compartidas necesitan los binarios
   Linux? Basicamente hay dos posibilidades (para poder ejecutar las
   siguientes instrucciones necesitara estar como root

   Si tiene acceso a un sistema Linux busque en el que bibliotecas necesita
   la aplicacion, y copielas a su sistema FreeBSD. Veamos unos ejemplos:

   Asumiremos que utilizo FTP para conseguir los binarios Linux de Doom y los
   puso en un sistema Linux. Para ver que bibliotecas compartidas necesitara
   ejecute ldd linuxdoom:

 % ldd linuxdoom
 libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29

   Necesitaria todos los ficheros de la segunda columna, y tendra que
   ponerlos en /compat/linux con los nombres de la primera columna como
   enlaces simbolicos apuntando hacia ellos. De este modo tendria en su
   sistema FreeBSD los siguientes ficheros:

 /compat/linux/usr/X11/lib/libXt.so.3.1.0
 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
 /compat/linux/usr/X11/lib/libX11.so.3.1.0
 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
 /compat/linux/lib/libc.so.4.6.29
 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29

  Nota:

     Recuerde que si ya tiene una biblioteca compartida Linux con un numero
     de version mayor que coincida con la primera columna de la salida de ldd
     no necesitara copiar el fichero que aparece en la ultima columna; el que
     tiene deberia funcionar, aunque se aconseja copiar la biblioteca
     compartida de todas maneras si es una nueva version. Puede eliminar la
     vieja siempre que haga que el enlace simbolico apunte a la nueva. Si
     tiene estas bibliotecas en su sistema:

 /compat/linux/lib/libc.so.4.6.27
 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27

     y un binario requiere una version mas reciente (como indica la siguiente
     salida de ldd):

 libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29

     si solo ve una o dos versiones desfasadas en los ultimos digitos no se
     preocupe de copiar /lib/libc.so.4.6.29, el programa deberia funcionar
     bien con una version ligeramente antigua. De todas formas, si asi lo
     prefiere, puede actualizar libc.so; el resultado seria este:

 /compat/linux/lib/libc.so.4.6.29
 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29

  Nota:

     El mecanismo de enlazado simbolico solamente es necesario con binarios
     Linux. El enlazador en tiempo de ejecucion de FreeBSD se encarga de
     buscar el mismo las versiones correctas, asi que no tendra que
     preocuparse usted de hacerlo.

  10.2.2. Instalar binarios ELF Linux

   Los binarios ELF algunas veces requieren un paso extra de "marcado". Si
   trata de ejecutar un binario ELF no marcado recibira un mensaje de error
   como el siguiente:

 % ./mi-binario-elf
 ELF binary type not known
 Abort

   Para ayudar al kernel de FreeBSD a distinguir entre un binario ELF de
   FreeBSD y uno de Linux utilice brandelf(1).

 % brandelf -t Linux mi-binario-elf-de-linux

   Las herramientas GNU se encargan de ubicar automaticamente la marca
   apropiada en los binarios ELF, por lo tanto este paso sera innecesario en
   un futuro proximo.

  10.2.3. Configuracion de la resolucion de nombres de equipos

   Si el DNS no funciona u obtiene este mensaje:

 resolv+: "bind" is an invalid keyword resolv+:
 "hosts" is an invalid keyword

   Necesitara un fichero /compat/linux/etc/host.conf con el siguiente
   contenido:

 order hosts, bind
 multi on

   Significa que /etc/hosts seraanalizado en primer lugar y despues se usara
   DNS. Si /compat/linux/etc/host.conf no esta instalado, las aplicaciones
   Linux usan el /etc/host.conf de FreeBSD y chocan con la sintaxis
   (incompatible) de FreeBSD. Borre bind de su /etc/resolv.conf si no tiene
   configurado un servidor de nombres.

10.3. Instalacion de Mathematica(R)

   Actualizado para Mathematica 5.X por Hollas Boris.

   Este documento describe el proceso de instalacion de la version para Linux
   de Mathematica(R) 5.X en un sistema FreeBSD.

   Puede pedir a Wolfram, el fabricante, La version para para Linux de
   Mathematica(R) o la version de Mathematica(R) para estudiantes en su sitio
   web, http://www.wolfram.com/.

  10.3.1. El instalador de Mathematica(R)

   Lo primero que tiene que hacer es decirle a FreeBSD que los binarios de
   Mathematica(R) para Linux utilizan la ABI Linux. La forma mas sencilla de
   hacerlo es marcar por omision todos los binarios sin marcas como Linux
   ELF.

 # sysctl kern.fallback_elf_brand=3

   Hecho esto FreeBSD asumira que cualquier binario sin marca que encuentre
   utiliza la ABI Linux; de este modo podra ejecutar el binario directamente
   desde el CDROM.

   Copie el fichero MathInstaller en su disco duro

 # mount /cdrom
 # cp /cdrom/Unix/Installers/Linux/MathInstaller /directoriolocal/

   Edite este fichero y sustituya la primera linea, /bin/sh, por
   /compat/linux/bin/sh para asegurarnos de que lo que ejecute el instalador
   sea la verion de sh(1) de Linux. El siguiente paso es sustituir todos los
   Linux) por FreeBSD) con un editor de texto on con el script que encontrara
   en la siguiente seccion. Esto se hace para ayudar al instalador de
   Mathematica(R), el cual en un cierto momento invoca a uname -s para
   determinar el sistema operativo, a tratar a FreeBSD como si fuera un
   sistema operativo muy similar a Linux. Hecho todo esto, cuando ejecute
   MathInstaller podra instalar Mathematica(R).

  10.3.2. Modificacion de los ejecutables de Mathematica(R)

   Debe modificar los scripts de shell que Mathematica(R) creo durante la
   instalacion antes de usarlos. Si eligio ubicar en /usr/local/bin los
   ejecutables de Mathematica(R) vera que en ese directorio hay enlaces
   simbolicos a ficheros como math, mathematica, Mathematica y MathKernel. En
   cada uno de esos ficheros debe sustituir Linux) por FreeBSD) con un editor
   de texto o bien con el siguiente script de shell:

 #!/bin/sh
 cd /usr/local/bin
 for i in math mathematica Mathematica MathKernel
   do sed 's/Linux)/FreeBSD)/g' $i > $i.tmp
   sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i
   rm $i.tmp
   chmod a+x $i
 done

  10.3.3. Como obtener una contrasena de Mathematica(R)

   Cuando arranque Mathematica(R) por primera vez se le pedira una
   contrasena. Si Wolfram no le ha enviado ya necesita un "machine ID", para
   lo cual debe ir al directorio de instalacion y ejecutar mathinfo. Este
   "machine IDE" se obtiene de la direccion MAC de la primera tarjeta
   Ethernet de la maquina y tiene como objetivo que no pueda ejecutar
   Mathematica(R) en mas de una maquina.

   Durante el proceso de registro en Wolfram (ya sea por correo electronico,
   telefono o fax) les dara el "machine ID" y Wolfram le enviara una
   contrasena relacionada con el, consistente en grupos de numeros.

  10.3.4. Ejecucion del <<frontend>> de Mathematica(R) traves de una red

   Mathematica(R) usa unos cuantos tipos especiales para mostrar caracteres
   que no estan en ningun conjunto estandar de tipos: integrales, sumas,
   letras griegas, etc. El protocolo X exige que los tipos esten instalados
   en local, es decir, tiene que copiar los tipos del CDROM o la maquina
   desde la que ha instalado Mathematica(R) a su maquina. Los tipos estan en
   el directorio del CDDROM /cdrom/Unix/Files/SystemFiles/Fonts y se supone
   que deben estar en su disco duro en el directorio
   /usr/local/mathematica/SystemFiles/Fonts. Los tipos estan realmente en los
   subdirectorios Type1 y X. Hay varias formas de utilizarlos.

   La primera es copiarlos en uno de los directorios de tipos que hay en
   /usr/X11R6/lib/X11/fonts, antes de lo cual tendra que anadir a fonts.dir
   los nombres de los tipos; tendra tambien que cambiar el numero de tipos en
   la primera linea. Por otra parte, todo esto puede hacerse ejecutando
   mkfontdir(1) en el directorio donde haya copiado los tipos.

   La segunda forma de utilizar estos tipos es copiarlos bajo
   /usr/X11R6/lib/X11/fonts:

 # cd /usr/X11R6/lib/X11/fonts
 # mkdir X
 # mkdir MathType1
 # cd /cdrom/Unix/Files/SystemFiles/Fonts
 # cp X/* /usr/X11R6/lib/X11/fonts/X
 # cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
 # cd /usr/X11R6/lib/X11/fonts/X
 # mkfontdir
 # cd ../MathType1
 # mkfontdir

   Anada los nuevos directorios de tipos a su ruta de tipos:

 # xset fp+ /usr/X11R6/lib/X11/fonts/X
 # xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
 # xset fp rehash

   Si usa el servidor Xorg puede cargar los tipos automaticamente
   anadiendolos al fichero xorg.conf.

  Nota:

   En servidores XFree86(TM) el fichero de configuracion es XF86Config.

   Si no tiene ya en su sistema un directorio /usr/X11R6/lib/X11/fonts/Type1
   puede cambiarle el nombre al directorio MathType1 del ejemplo anterior por
   Type1.

10.4. Instalacion de Maple(TM)

   Escrito por Aaron Kaplan.
   Gracias a Robert Getschmann.

   Maple(TM) es un programa comercial de matematicas similar a
   Mathematica(R). Puede adquirir este software en http://www.maplesoft.com/;
   tras registrarlo recibira un fichero de licencia. Si quiere instalar este
   software en FreeBSD siga los siguienes pasos:

    1. Ejecute el "script" de shell INSTALL desde el lugar de instalacion del
       producto. Elija la opcion "RedHat" cuando le pregunte el programa de
       instalacion. /usr/local/maple es un buen sitio para instalar el
       software.

    2. Si no lo ha hecho ya, solicite una licencia para Maple(TM) a Maple
       Waterloo Software (http://register.maplesoft.com/) y copiela a
       /usr/local/maple/license/license.dat.

    3. Instale el gestor de licencias FLEXlm ejecutando el "script" de shell
       de instalacion INSTALL_LIC que viene con Maple(TM). Introduzca el
       nombre de su maquina (el servidor de licencias lo necesita).

    4. Parchee el fichero /usr/local/maple/bin/maple.system.type con lo
       siguiente:

    ----- snip ------------------
 *** maple.system.type.orig      Sun Jul  8 16:35:33 2001
 --- maple.system.type   Sun Jul  8 16:35:51 2001
 ***************
 *** 72,77 ****
 --- 72,78 ----
           # the IBM RS/6000 AIX case
           MAPLE_BIN="bin.IBM_RISC_UNIX"
           ;;
 +     "FreeBSD"|\
       "Linux")
           # the Linux/x86 case
         # We have two Linux implementations, one for Red Hat and
    ----- snip end of patch -----

       Tenga muy presente que despues de "FreeBSD"|\ no debe haber ningun
       espacio en blanco.

       Este parche le dice a Maple(TM) que interprete "FreeBSD" como un tipo
       de sistema Linux. El "script" de shell bin/maple llama al "script" de
       shell bin/maple.system.type, que a su vez recurre a uname -a para
       dictaminar el nombre del sistema operativo. Dependiendo de cual sea
       sabra que binarios utilizar.

    5. Inicio del servidor de licencias.

       El siguiente "script", sito en /usr/local/etc/rc.d/lmgrd.sh, le
       permitira arrancar lmgrd:

    ----- snip ------------

 #! /bin/sh
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
 PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
 export PATH

 LICENSE_FILE=/usr/local/maple/license/license.dat
 LOG=/var/log/lmgrd.log

 case "$1" in
 start)
         lmgrd -c ${LICENSE_FILE} 2<< ${LOG} 1<&2
         echo -n " lmgrd"
         ;;
 stop)
         lmgrd -c ${LICENSE_FILE} -x lmdown 2<< ${LOG} 1<&2
         ;;
 *)
         echo "Usage: `basename $0` {start|stop}" 1<&2
         exit 64
         ;;
 esac

 exit 0
    ----- snip ------------

    6. Prueba de arranque de Maple(TM):

 % cd /usr/local/maple/bin
 % ./xmaple

       Todo deberia funcionar perfectamente. Si es asi aun le queda un ultimo
       paso: escribir a Maplesoft y decirles que seria genial una version
       nativa para FreeBSD.

  10.4.1. Problemas frecuentes

     * El gestor de licencias FLEXlm puede ser un tanto dificil de usar. En
       caso de necesitarla tiene mas informacion en
       http://www.globetrotter.com/.

     * lmgrd tiene una reconocida fama de ser muy meticuloso en todo lo
       relacionado con el fichero de licencia; suele generar volcados de
       memoria si se encuentra con algun problema. Un fichero de licencia
       correcto tiene que parecerse mucho a este:

 # =======================================================
 # License File for UNIX Installations ("Pointer File")
 # =======================================================
 SERVER chillig ANY
 #USE_SERVER
 VENDOR maplelmg

 FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
          PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
          ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
          SN=XXXXXXXXX

  Nota:

       El numero de serie y la clave han sido sobreescritos con X. chillig es
       el nombre de un equipo.

       Puede editar el fichero de licencia siempre que no toque la linea
       "FEATURE" (que esta protegida por la clave de la licencia).

10.5. Instalacion de MATLAB(R)

   Escrito por Dan Pelleg.

   Este documento describe el proceso de instalacion de la version para Linux
   de MATLAB(R) version 6.5 en FreeBSD. En general funciona bastante bien,
   excepcion hecha de Java Virtual Machine(TM) (consulte la Seccion 10.5.3,
   "Enlace del entorno de ejecucion Java(TM)").

   La version Linux de MATLAB(R) puede pedirse directamente en el sitio de
   The MathWorks, http://www.mathworks.com. Tiene que recibir tambien el
   fichero de licencia o instrucciones de como crearlo. Al hacer su pedido
   aproveche para decirles que seria muy buena idea que ofrecieran una
   version nativa de su software para FreeBSD.

  10.5.1. Instalacion de MATLAB(R)

   Para instalar MATLAB(R) haga lo siguiente:

    1. Inserte el CD de instalacion y montelo. Conviertase en root e inicie
       la instalacion:

 # /compat/linux/bin/sh /cdrom/install

  Sugerencia:

       El instalador es grafico. Si obtiene errores acerca de no ser capaz de
       abrir un display teclee setenv HOME ~USUARIO, donde USUARIO es el
       nombre del usuario con el que hizo su(1).

    2. Teclee /compat/linux/usr/local/matlab donde el instalador le pida el
       directorio raiz de MATLAB(R).

  Sugerencia:

       Esto ultimo le facilitara la entrada de datos durante el resto de la
       instalacion. Introduzca lo siguiente en el "prompt" de su shell: set
       MATLAB=/compat/linux/usr/local/matlab

    3. Edite el fichero de licencia tal y como consta en las instrucciones de
       la licencia de MATLAB(R).

  Sugerencia:

       Puede tenerlo ya editado y copiado a $MATLAB/license.dat desde antes
       de que el instalador se lo pida.

    4. Complete el proceso de instalacion.

   La instalacion MATLAB(R) ha finalizado. Los siguientes pasos aplicaran el
   "pegamento" necesario para conectarlo a su sistema FreeBSD.

  10.5.2. Inicio del administrador de licencias

    1. Cree los enlaces simbolicos que necesitan los "scripts" del
       administrador de licencias:

 # ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
 # ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW

    2. Cree un fichero de inicio en /usr/local/etc/rc.d/flexlm.sh. El
       siguiente ejemplo es una version modificada de
       $MATLAB/etc/rc.lm.glnx86 que viene con la distribucion de MATLAB(R).
       Los cambios que se han hecho en el obedecen a la ubicacion de los
       ficheros y el arranque del administrador de licencias bajo emulacion
       de Linux.

 #!/bin/sh
 case "$1" in
   start)
         if [ -f /usr/local/etc/lmboot_TMW ]; then
               /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u nombre-de-usuario && echo 'MATLAB_lmgrd'
         fi
         ;;
   stop)
         if [ -f /usr/local/etc/lmdown_TMW ]; then
             /compat/linux/bin/sh /usr/local/etc/lmdown_TMW  > /dev/null 2>&1
         fi
         ;;
   *)
         echo "Usage: $0 {start|stop}"
         exit 1
         ;;
 esac

 exit 0

  Importante:

       El fichero debe ser ejecutable:

 # chmod +x /usr/local/etc/rc.d/flexlm.sh

       Tendra que reemplazar la entrada nombre-de-usuario de nuestro ejemplo
       por un nombre de usuario valido en su sistema (que no sea root).

    3. Arranque el administrador de licencias:

 # /usr/local/etc/rc.d/flexlm.sh start

  10.5.3. Enlace del entorno de ejecucion Java(TM)

   Cambie el enlace del entorno de ejecucion Java(TM) (JRE) a uno que
   funcione en FreeBSD:

 # cd $MATLAB/sys/java/jre/glnx86/
 # unlink jre; ln -s ./jre1.1.8 ./jre

  10.5.4. Creacion de un "script" de arranque para MATLAB(R)

    1. Coloque el siguiente "script" de arranque en /usr/local/bin/matlab:

 #!/bin/sh
 /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"

    2. Escriba chmod +x /usr/local/bin/matlab.

  Sugerencia:

   Dependiendo de su version de emulators/linux_base tal vez obtenga errores
   al ejecutar este "script". Para evitarlo edite
   /compat/linux/usr/local/matlab/bin/matlab y cambie la linea en la que
   aparece:

 if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then

   (en la version 13.0.1 es en la linea 410) por esta otra linea:

 if test -L $newbase; then

  10.5.5. Creacion de un "script" para detener MATLAB(R)

   Este "script" solucionara las dificultades que pueda tener para detener
   MATLAB(R) correctamente.

    1. Cree un fichero llamado $MATLAB/toolbox/local/finish.m y ponga en el
       una sola linea con este texto:

 ! $MATLAB/bin/finish.sh

  Nota:

       $MATLAB debe escribirse tal cual.

  Sugerencia:

       En el mismo directorio encontrara los ficheros finishsav.m y
       finishdlg.m, que le permiten guardar su trabajo antes de salir de la
       aplicacion. Si quiere usar alguno de ellos, inserte la linea de arriba
       inmediatamente despues de save.

    2. Cree un fichero $MATLAB/bin/finish.sh con el siguiente contenido:

 #!/usr/compat/linux/bin/sh
 (sleep 5; killall -1 matlab_helper) &
 exit 0

    3. El fichero tiene que ser ejecutable:

 # chmod +x $MATLAB/bin/finish.sh

  10.5.6. Uso de MATLAB(R)

   Desde este momento ya puede usted teclear matlab y empezar a usarlo.

10.6. Instalacion de Oracle(R)

   Escrito por Marcel Moolenaar.

  10.6.1. Prefacio

   Este texto describe el proceso de instalacion de Oracle(R) 8.0.5 y
   Oracle(R) 8.0.5.1 Enterprise Edition para Linux en una maquina FreeBSD.

  10.6.2. Instalacion del entorno Linux

   Debe tener instalados los ports emulators/linux_base y
   devel/linux_devtools. Si tiene dificultades con estos ports es posible que
   tenga que usar los paquetes o quizas versiones mas antiguas de dichas
   aplicaciones que encontrara en la Coleccion de Ports.

   Si quiere usar el agente inteligente tambien tendra que instalar el
   paquete Tcl de Red Hat, tcl-8.0.3-20.i386.rpm. La orden generica para
   instalar paquetes con el port oficial de RPM (archivers/rpm) es:

 # rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm paquete

   La instalacion de dicho paquete no debe generar ningun error.

  10.6.3. Creacion del entorno Oracle(R)

   Antes de instalar Oracle(R) tendra que configurar un entorno apropiado.
   Este documento solamente explica lo que hay que hacer especialmente para
   utilizar la version de Linux para Oracle(R) FreeBSD, no lo que figura en
   la guia de instalacion de Oracle(R).

    10.6.3.1. Personalizacion del kernel

   Tal y como consta en la guia de instalacion de Oracle(R), debe configurar
   la cantidad maxima de memoria compartida. No utilice SHMMAX en FreeBSD.
   SHMMAX se calcula a partir de SHMMAXPGS y PGSIZE, asi que defina
   SHMMAXPGS. Todas las demas opciones pueden usarse tal y como se describen
   en la guia. Por ejemplo:

 options SHMMAXPGS=10000
 options SHMMNI=100
 options SHMSEG=10
 options SEMMNS=200
 options SEMMNI=70
 options SEMMSL=61

   Configure estas opciones para que se ajusten al uso que pretenda darle a
   Oracle(R).

   Asegurese tambien de que las siguientes opciones estan en el fichero de
   configuracion de su kernel:

 options SYSVSHM #SysV shared memory
 options SYSVSEM #SysV semaphores
 options SYSVMSG #SysV interprocess communication

    10.6.3.2. Cuenta Oracle(R)

   Cree una cuenta oracle segun el procedimiento habitual de creacion de
   usuarios. La cuenta oracle, empero, tiene algo especial puesto que debe
   teer una shell de Linux. Anada /compat/linux/bin/bash a /etc/shells y
   asigne a la cuenta oracle /compat/linux/bin/bash como shell por omision.

    10.6.3.3. Entorno

   Ademas de las variables normales para Oracle(R), como ORACLE_HOME y
   ORACLE_SID, debe configurar las siguientes variables de entorno:

      Variable                               Valor                            
   LD_LIBRARY_PATH $ORACLE_HOME/lib                                           
   CLASSPATH       $ORACLE_HOME/jdbc/lib/classes111.zip                       
                   /compat/linux/bin /compat/linux/sbin /compat/linux/usr/bin 
   PATH            /compat/linux/usr/sbin /bin /sbin /usr/bin /usr/sbin       
                   /usr/local/bin $ORACLE_HOME/bin                            

   Le aconsejamos configurar todas las variables de entorno en .profile.
   Veamos un ejemplo completo:

 ORACLE_BASE=/oracle; export ORACLE_BASE
 ORACLE_HOME=/oracle; export ORACLE_HOME
 LD_LIBRARY_PATH=$ORACLE_HOME/lib
 export LD_LIBRARY_PATH
 ORACLE_SID=ORCL; export ORACLE_SID
 ORACLE_TERM=386x; export ORACLE_TERM
 CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
 export CLASSPATH
 PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin
 PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
 PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
 export PATH

  10.6.4. Instalacion de Oracle(R)

   Debido a una pequena inconsistencia en el emulador Linux tendra que crear
   un directorio llamado .oracle en /var/tmp antes de iniciar el instalador.
   Haga que sea propiedad del usuario oracle. Hecho esto deberi poder
   instalar Oracle(R) sin ningun problema. Si no es asi revise su
   distribucion Oracle(R) y su configuracion. Una vez finalizada la
   instalacion de Oracle(R) aplique los parches que se detallan en las dos
   siguientes subsecciones.

   Un problema que se da con una cierta frecuencia es que el adaptador del
   protocolo TCP no esta correctamente instalado. Como consecuencia no puede
   iniciarse ninguna escucha TCP, a las que tambien se les llama directamente
   <<listeners>>. Esto le ayudara a resolver el problema.:

 # cd $ORACLE_HOME/network/lib
 # make -f ins_network.mk ntcontab.o
 # cd $ORACLE_HOME/lib
 # ar r libnetwork.a ntcontab.o
 # cd $ORACLE_HOME/network/lib
 # make -f ins_network.mk install

   No se olvide de ejecutar root.sh de nuevo.

    10.6.4.1. Como parchear root.sh

   Durante la instalacion de Oracle(R) algunas acciones que requieren ser
   ejecutadas como root deben almacenarse en un "script" de shell llamado
   root.sh. Dicho "script" esta en el directorio orainst. Aplique el
   siguiente parche a root.sh para que utilice la ruta correcta de chown o
   ejecute el "script" bajo una shell nativa de Linux.

 *** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
 --- orainst/root.sh Mon Dec 28 15:58:53 1998
 ***************
 *** 31,37 ****
 # This is the default value for CHOWN
 # It will redefined later in this script for those ports
 # which have it conditionally defined in ss_install.h
 ! CHOWN=/bin/chown
 #
 # Define variables to be used in this script
 --- 31,37 ----
 # This is the default value for CHOWN
 # It will redefined later in this script for those ports
 # which have it conditionally defined in ss_install.h
 ! CHOWN=/usr/sbin/chown
 #
 # Define variables to be used in this script

   Si no esta instalando Oracle(R) desde un CD puede parchear las fuentes de
   root.sh. Se llama rthd.sh y esta en el directorio orainst del arbol de
   fuentes.

    10.6.4.2. Como parchear genclntsh

   El "script" genclntsh se usa para crear una biblioteca de cliente
   compartida y para construir los demos. Al aplicar el siguiente parche
   comentara la definicion de PATH:

 *** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
 --- bin/genclntsh Tue Dec 22 15:36:49 1998
 ***************
 *** 32,38 ****
 #
 # Explicit path to ensure that we're using the correct commands
 #PATH=/usr/bin:/usr/ccs/bin export PATH
 ! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
 #
 # each product MUST provide a $PRODUCT/admin/shrept.lst
 --- 32,38 ----
 #
 # Explicit path to ensure that we're using the correct commands
 #PATH=/usr/bin:/usr/ccs/bin export PATH
 ! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
 #
 # each product MUST provide a $PRODUCT/admin/shrept.lst

  10.6.5. Ejecucion de Oracle(R)

   Una vez seguidas estas instrucciones podra ejecutar Oracle(R) como si la
   hubiera instalado en Linux.

10.7. Instalacion de SAP(R) R/3(R)

   Escrito por Holger Kipp.
   Version original convertida a SGML por Valentino Vaschetto.

   Las instalaciones de sistemas SAP(R) en FreeBSD no reciben soporte tecnico
   de SAP(R). SAP(R) solamente lo ofrece si se usan plataformas certificadas.

  10.7.1. Introduccion

   Este texto expone una forma de instalar un SAP(R) R/3(R) System con una
   Oracle(R) Database para Linux en una maquina FreeBSD, incluyendo la
   instalacion de FreeBSD y Oracle(R). Se muestran dos configuraciones
   diferentes:

     * SAP(R) R/3(R) 4.6B (IDES) con Oracle(R) 8.0.5 en FreeBSD 4.3-STABLE

     * SAP(R) R/3(R) 4.6C con Oracle(R) 8.1.7 en FreeBSD 4.5-STABLE

   Aunque este documento trate de describir todos los pasos importantes con
   detalle no ha sido escrito como sustituto de las guias de instalacion de
   Oracle(R) y SAP(R) R/3(R).

   Por favor, consulte la documentacion de SAP(R) R/3(R) que se incluye en la
   edicion para Linux de SAP(R) y las preguntas especificas sobre Oracle(R),
   asi como los recursos que esten a su disposicion sobre Oracle(R) y SAP(R)
   OSS.

  10.7.2. Software

   Durante la instalacion de SAP(R) se han utilizado los siguientes CD-ROM:

    10.7.2.1. SAP(R) R/3(R) 4.6B, Oracle(R) 8.0.5

    Nombre   Numero                         Descripcion                       
   KERNEL   51009113  SAP Kernel Oracle / Installation / AIX, Linux, Solaris  
   RDBMS    51007558  Oracle / RDBMS 8.0.5.X / Linux                          
   EXPORT1  51010208  IDES / DB-Export / Disco 1 de 6                         
   EXPORT2  51010209  IDES / DB-Export / Disco 2 de 6                         
   EXPORT3  51010210  IDES / DB-Export / Disco 3 de 6                         
   EXPORT4  51010211  IDES / DB-Export / Disco 4 de 6                         
   EXPORT5  51010212  IDES / DB-Export / Disco 5 de 6                         
   EXPORT6  51010213  IDES / DB-Export / Disco 6 de 6                         

   Tambien utilizamos el CD de Oracle(R) 8 Server (version pre-produccion
   8.0.5 para Linux, version de kernel 2.0.33), que no es realmente necesario
   y FreeBSD 4.3-STABLE (a unos cuantos dias de la liberacion de
   4.3-RELEASE).

    10.7.2.2. SAP(R) R/3(R) 4.6C SR2, Oracle(R) 8.1.7

    Nombre   Numero                        Descripcion                        
   KERNEL   51014004 SAP Kernel Oracle / SAP Kernel Version 4.6D / DEC, Linux 
   RDBMS    51012930 Oracle 8.1.7/ RDBMS / Linux                              
   EXPORT1  51013953 Release 4.6C SR2 / Export / Disco 1 de 4                 
   EXPORT1  51013953 Release 4.6C SR2 / Export / Disco 2 de 4                 
   EXPORT1  51013953 Release 4.6C SR2 / Export / Disco 3 de 4                 
   EXPORT1  51013953 Release 4.6C SR2 / Export / Disco 4 de 4                 
   LANG1    51013954 Release 4.6C SR2 / Language / DE, EN, FR / Disco 1 de 3  

   Segun los idiomas que quiera usar es posible que necesite otros CD de
   idiomas. Solo hemos utilizado DE y EN, asi que nos basto con el primer CD.
   Para su informacion, los numeros de los cuatro CD EXPORT son identicos.
   Los tres CD de idiomas tambien tienen el mismo numero, aunque esto es
   distinto en los CD de la version 4.6B IDES. Al escribir este texto
   (20.03.2002) ejecutamos la instalacion en FreeBSD 4.5-STABLE (20.03.2002).

  10.7.3. Notas SAP(R)

   Las siguientes notas han resultado ser muy utiles durante la instalacion,
   asi que le recomendamos encarecidamente que las lea antes de instalar
   SAP(R) R/3(R):

    10.7.3.1. SAP(R) R/3(R) 4.6B, Oracle(R) 8.0.5

       Numero                               Titulo                            
   0171356        SAP Software on Linux: Essential Comments                   
   0201147        INST: 4.6C R/3 Inst. on UNIX - Oracle                       
   0373203        Update / Migration Oracle 8.0.5 --> 8.0.6/8.1.6 LINUX       
   0072984        Release of Digital UNIX 4.0B for Oracle                     
   0130581        R3SETUP step DIPGNTAB terminates                            
   0144978        Your system has not been installed correctly                
   0162266        Questions and tips for R3SETUP on Windows NT / W2K          

    10.7.3.2. SAP(R) R/3(R) 4.6C, Oracle(R) 8.1.7

        Numero                                Titulo                          
   0015023           Initializing table TCPDB (RSXP0004) (EBCDIC)             
   0045619           R/3 with several languages or typefaces                  
   0171356           SAP Software on Linux: Essential Comments                
   0195603           RedHat 6.1 Enterprise version: Known problems            
   0212876           The new archiving tool SAPCAR                            
   0300900           Linux: Released DELL Hardware                            
   0377187           RedHat 6.2: important remarks                            
   0387074           INST: R/3 4.6C SR2 Installation on UNIX                  
   0387077           INST: R/3 4.6C SR2 Inst. on UNIX - Oracle                
   0387078           SAP Software on UNIX: OS Dependencies 4.6C SR2           

  10.7.4. Requisitos de hardware

   El siguiente equipo es suficiente para la instalacion de un sistema
   SAP(R) R/3(R). Si pretende darle uso productivo necesitara hacer un
   estudio detallado de sus necesidades:

       Componente                4.6B                        4.6C             
   Procesador         Pentium(R) III 800MHz x 2   Pentium(R) III 800MHz x 2   
   Memoria            1GB ECC                     2GB ECC                     
   Espacio en disco   50-60GB (IDES)              50-60GB (IDES)              

   Para su uso en produccion le recomendamos procesadores Xeon(TM) con una
   cache grande, discos de alta velocidad (SCSI, controlador de RAID por
   hardware), USV y ECC-RAM. Un espacio en disco tan grande se debe al
   sistema IDES preconfigurado, que crea ficheros de bases de datos de 27 GB
   durante la instalacion. Este espacio tambien es suficiente para sistemas
   de produccion iniciales y datos de aplicacion.

    10.7.4.1. SAP(R) R/3(R) 4.6B, Oracle(R) 8.0.5

   Este es el hardware que utilizamos al escribir este texto: placa base dual
   con 2 procesadores Pentium(R) III a 800 MHz, adaptador SCSI Adaptec(R)
   29160 Ultra160 (para acceder a una unidad de cinta 40/80 GB DLT y CDROM),
   Mylex(R) AcceleRAID(TM) (2 canales, firmware 6.00-1-00 con 32 MB RAM). La
   controladora Mylex(R) RAID tiene conectados dos discos duros de 17 GB
   (replicados) y cuatro discos duros de 36 GB (RAID nivel 5).

    10.7.4.2. SAP(R) R/3(R) 4.6C, Oracle(R) 8.1.7

   Para esta instalacion se uso un Dell(TM) PowerEdge(TM) 2500: placa base
   dual con 2 procesadores Pentium(R) III a 1000 MHz (256 kB de Cache), 2 GB
   PC133 ECC SDRAM, controladora RAID PERC/3 DC PCI con 128 MB y una unidad
   EIDE DVD-ROM. La controladora RAID tiene conectados dos discos duros 18 GB
   (replicados) y cuatro discos duros de 36 GB (RAID nivel 5).

  10.7.5. Instalacion de FreeBSD

   Lo primero que tiene que hacer es instalar FreeBSD. Hay muchas formas de
   hacerlo. Nosotros instalamos FreeBSD 4.3 desde un FTP y FreeBSD 4.5 desde
   el CD de la distribucion. Si necesita mas informacion sobre los medios de
   instalacion de FreeBSD consulte la Seccion 2.13, "Como preparar su propio
   medio de instalacion".

    10.7.5.1. Esquema de disco

   Quisimos hacer el proceso lo mas simple posible, asi que usamos el esquema
   de disco de SAP(R) R/3(R) 46B y SAP(R) R/3(R) 46C SR2. Solo cambiamos los
   nombres de dispositivo debido a que las instalaciones tuvieron lugar en
   hardware diferente (/dev/da y /dev/amr respectivamente. Si utiliza una AMI
   MegaRAID(R) vera en pantalla /dev/amr0s1a en lugar de /dev/da0s1a):

   Sistema de ficheros  Tamano (bloques de  Tamano (GB)      Montado en       
                               1k)          
   /dev/da0s1a         1.016.303            1           /                     
   /dev/da0s1b                              6           swap                  
   /dev/da0s1e         2.032.623            2           /var                  
   /dev/da0s1f         8.205.339            8           /usr                  
   /dev/da1s1e         45.734.361           45          /compat/linux/oracle  
   /dev/da1s1f         2.032.623            2           /compat/linux/sapmnt  
   /dev/da1s1g         2.032.623            2           /compat/linux/usr/sap 

   Configure e inicialice antes que nada las dos unidades logicas con el
   software Mylex(R) o PERC/3 RAID. El software puede iniciarse durante la
   fase de arranque de BIOS.

   Por favor, tenga en cuenta que el esquema de disco que utilizamos difiere
   ligeramente de las recomendaciones de SAP(R), ya que SAP(R) sugiere montar
   los subdirectorios Oracle(R) (y algunos otros) por separado. Decidimos
   crearlos como subdirectorios reales para simplificar.

    10.7.5.2. make world y un nuevo kernel

   Descargue las fuentes -STABLE mas recientes. Ejecute make world y compile
   su kernel personalizado. Recuerde incluir en el tanto los parametros del
   kernel requeridos por SAP(R) R/3(R) como los que necesita Oracle(R).

  10.7.6. Instalacion del entorno Linux

    10.7.6.1. Instalacion del sistema base Linux

   Primero instale el port linux_base (como root):

 # cd /usr/ports/emulators/linux_base
 # make install distclean

    10.7.6.2. Instalacion del entorno de desarrollo Linux

   El entorno de desarrollo Linux es imprescindible si quiere instalar
   Oracle(R) en FreeBSD segun se explica en la Seccion 10.6, "Instalacion de
   Oracle(R)":

 # cd /usr/ports/devel/linux_devtools
 # make install distclean

   El entorno de desarrollo Linux solo ha de instalarse si sigue el proceso
   para instalar SAP(R) R/3(R) 46B IDES. No es necesario si Oracle(R) DB no
   esta reenlazado (<<relinked>>) con el sistema FreeBSD. Este seria su caso
   si esta usa el fichero comprimido tar de Oracle(R) de un sistema Linux.

    10.7.6.3. Instalacion de los RPM necesarios

   Necesitara soporte PAM para iniciar el programa R3SETUP. Durante la
   primera instalacion de SAP(R) en FreeBSD 4.3-STABLE intentamos instalar
   PAM con todas las dependencias y finalmente forzamos la instalacion del
   paquete PAM, y funciono. En SAP(R) R/3(R) 4.6C SR2 forzamos la instalacion
   del RPM PAM, que tambien funciono, asi que parece que las dependencias no
   lo son tanto:

 # rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \
 pam-0.68-7.i386.rpm

   Para que Oracle(R) 8.0.5 pueda lanzar el agente inteligente tambien
   tendremos que instalar el paquete Tcl de RedHat tcl-8.0.5-30.i386.rpm (si
   no, cuando lo reenlace durante la instalacion de Oracle(R) no funcionara).
   Existen otros aspectos relacionados con el reenlazado de Oracle(R) a tener
   en cuenta durante la instalacion, pero atanen a la version para Linux de
   Oracle(R) y no son especificos de FreeBSD.

    10.7.6.4. Sugerencias

   Le recomendamos anadir linprocfs a /etc/fstab. Consulte linprocfs(5) para
   mas informacion. Otro parametro que deberia configurar es
   kern.fallback_elf_brand=3 en /etc/sysctl.conf.

  10.7.7. Creacion del entorno SAP(R) R/3(R)

    10.7.7.1. Creacion de los sistemas de ficheros y puntos de montaje
    necesarios

   Para una instalacion sencilla es suficiente con crear los siguientes
   sistemas de ficheros:

               punto de montaje                        tamano en GB           
   /compat/linux/oracle                      45 GB                            
   /compat/linux/sapmnt                      2 GB                             
   /compat/linux/usr/sap                     2 GB                             

   Tambien es necesario crear algunos enlaces. Si no, el instalador SAP(R)
   tendra problemas ya que buscara los siguientes enlaces:

 # ln -s /compat/linux/oracle /oracle
 # ln -s /compat/linux/sapmnt /sapmnt
 # ln -s /compat/linux/usr/sap /usr/sap

   Veamos unos cuantos errores que se le pueden presentar durante la
   instalacion (en este caso con el sistema PRD y la instalacion de
   SAP(R) R/3(R) 4.6C SR2):

 INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200
     Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to
     /sapmnt/PRD/exe. Creating if it does not exist...

 WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400
     Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file
     /compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The
     program cannot go on as long as this link exists at this
     location. Move the link to another location.

 ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0
     can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content
     '/sapmnt/PRD/exe'

    10.7.7.2. Creacion de usuarios y directorios

   SAP(R) R/3(R) necesita dos usuarios y tres grupos. Los nombres de usuario
   dependen del "SAP(R) system ID" (SID), y consisten en tres letras. Algunos
   de estos SID estan reservados por SAP(R) (por ejemplo SAP y NIX. Tiene una
   lista completa de ellos en la documentacion de SAP(R)). Para la
   instalacion de IDES usamos IDS y para la instalacion de 4.6C SR2 PRD, dado
   que ese sistema esta pensado para un uso de produccion. Tenemos por lo
   tanto los siguientes grupos (Los ID de grupo pueden ser diferentes, estos
   son solamente los valores que utilizamos en nuestra instalacion):

      ID de grupo      nombre de grupo                descripcion             
   100               dba                  Administrador de base de datos      
   101               sapsys               Sistema SAP(R)                      
   102               oper                 Operador de base de datos           

   En una instalacion por omision de Oracle(R) solo se usa el grupo dba.
   Puede usar el grupo oper como grupo dba (consulte la documentacion de
   Oracle(R) y SAP(R) para mas informacion).

   Tambien necesitaremos los siguientes usuarios:

     ID de      nombre de       nombre   grupo     grupos       descripcion   
    usuario      usuario       generico          adicionales  
   1000      idsadm/prdadm    sidadm     sapsys oper          Administrador   
                                                              SAP(R)          
   1002      oraids/oraprd    orasid     dba    oper          Administrador   
                                                              Oracle(R)       

   Al anadir dichos usuarios mediante adduser(8) tenga en cuenta que debe
   incluir las siguientes entradas (observe la shell y el directorio home) al
   crear el "administrador SAP(R)":

 Name: sidadm
 Password: ******
 Fullname: SAP Administrator SID
 Uid: 1000
 Gid: 101 (sapsys)
 Class:
 Groups: sapsys dba
 HOME: /home/sidadm
 Shell: bash  (/compat/linux/bin/bash)

   y para el "Administrador Oracle(R)":

 Name: orasid
 Password: ******
 Fullname: Oracle Administrator SID
 Uid: 1002
 Gid: 100 (dba)
 Class:
 Groups: dba
 HOME: /oracle/sid
 Shell: bash  (/compat/linux/bin/bash)

   Esto tambien incluye al grupo oper en caso de que este usando el grupo dba
   y el grupo oper.

    10.7.7.3. Creacion de directorios

   Estos directorios se crean como sistemas de ficheros independientes. Esto
   depende totalmente de sus necesidades. Nosotros decidimos crearlos como
   directorios ya que todos estan en el mismo RAID 5:

   Primero vamos a configurar los propietarios y los derechos de algunos
   directorios (como root):

 # chmod 775 /oracle
 # chmod 777 /sapmnt
 # chown root:dba /oracle
 # chown sidadm:sapsys /compat/linux/usr/sap
 # chmod 775 /compat/linux/usr/sap

   Luego vamos a crear directorios como el usuario orasid. Estos seran todos
   subdirectorios de /oracle/SID:

 # su - orasid
 # cd /oracle/SID
 # mkdir mirrlogA mirrlogB origlogA origlogB
 # mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6
 # mkdir saparch sapreorg
 # exit

   Para la instalacion de Oracle(R) 8.1.7 tendra que crear unos cuantos
   directorios mas:

 # su - orasid
 # cd /oracle
 # mkdir 805_32
 # mkdir client stage
 # mkdir client/80x_32
 # mkdir stage/817_32
 # cd /oracle/SID
 # mkdir 817_32

  Nota:

   El directorio client/80x_32 tiene que tener exactamente este nombre. No
   sustituya la x por un numero ni por ninguna otra cosa.

   En el tercer paso creamos directorios como usuario sidadm:

 # su - sidadm
 # cd /usr/sap
 # mkdir SID
 # mkdir trans
 # exit

    10.7.7.4. Entradas en /etc/services

   SAP(R) R/3(R) requiere algunas entradas en /etc/services que es posible
   que no esten correctamente activadas durante la instalalacion. Anada las
   siguientes entradas (necesita al menos las entradas correspondientes al
   numero de instancia, en este caso, 00. No hara ningun dano anadir todas
   las entradas de 00 hasta 99 para dp, gw, sp y ms). Si va a utilizar un
   SAProuter o necesita acceder a SAP(R) OSS, tambien necesitara 99, ya que
   el puerto 3299 se usa generalmente para el proceso SAProuter en el sistema
   destino:

 sapdp00    3200/tcp # SAP Dispatcher.      3200 + Instance-Number
 sapgw00  3300/tcp # SAP Gateway.         3300 + Instance-Number
 sapsp00  3400/tcp #                      3400 + Instance-Number
 sapms00  3500/tcp #                      3500 + Instance-Number
 sapmsSID 3600/tcp # SAP Message Server.  3600 + Instance-Number
 sapgw00s   4800/tcp # SAP Secure Gateway   4800 + Instance-Number

    10.7.7.5. Locales necesarios

   SAP(R) requiere al menos dos locales que no forman parte de la instalacion
   por defecto de RedHat. SAP(R) dispone de los paquetes RPMs que pueda
   necesitar; puede descargalos desde su FTP, aunque tenga en cuenta que solo
   pueden acceder al mismo los clientes con acceso OSS). Consulte la nota
   0171356, que contiene una lista de los RPM que necesitara.

   Tambien puede crear enlaces (por ejemplo desde de_DE y en_US ), pero no se
   lo recomendamos si pretende configurar un sistema de produccion (no
   obstante, hemos de reconocer que a nosotros nos ha funcionado con el
   sistema IDES sin ningun problema). Necesitara al menos los siguientes
   locales:

 de_DE.ISO-8859-1
 en_US.ISO-8859-1

   Haga los enlaces de esta manera:

 # cd /compat/linux/usr/share/locale
 # ln -s de_DE de_DE.ISO-8859-1
 # ln -s en_US en_US.ISO-8859-1

   Si no estan habra algunos problemas durante la instalacion. Si se ignoran
   (es decir, si configura el STATUS de los pasos relacionados con esos
   locales a OK en el fichero CENTRDB.R3S) sera imposible entrar al sistema
   SAP(R) sin tener que recurrir a ciertas triquinuelas.

    10.7.7.6. Personalizacion del kernel

   Los sistemas SAP(R) R/3(R) necesitan muchos recursos, por eso hemos
   anadido los siguientes parametros al fichero de configuracion de su
   kernel:

 # Set these for memory pigs (SAP and Oracle):
 options MAXDSIZ="(1024*1024*1024)"
 options DFLDSIZ="(1024*1024*1024)"
 # System V options needed.
 options SYSVSHM #SYSV-style shared memory
 options SHMMAXPGS=262144 #max amount of shared mem. pages
 #options SHMMAXPGS=393216 #use this for the 46C inst.parameters
 options SHMMNI=256 #max number of shared memory ident if.
 options SHMSEG=100 #max shared mem.segs per process
 options SYSVMSG #SYSV-style message queues
 options MSGSEG=32767 #max num. of mes.segments in system
 options MSGSSZ=32 #size of msg-seg. MUST be power of 2
 options MSGMNB=65535 #max char. per message queue
 options MSGTQL=2046 #max amount of msgs in system
 options SYSVSEM #SYSV-style semaphores
 options SEMMNU=256 #number of semaphore UNDO structures
 options SEMMNS=1024 #number of semaphores in system
 options SEMMNI=520 #number of semaphore identifiers
 options SEMUME=100       #number of UNDO keys

   Puede consultar los valores minimos en la documentacion de SAP(R). Como no
   hay detalles sobre Linux, consulte para mayor informacion la seccion de
   HP-UX (32-bit). El sistema de instalacion 4.6C SR2 tiene mas memoria
   principal, asin que los segmentos compartidos pueden ser mas extensos
   tanto para SAP(R) como para Oracle(R); elija, por tanto, un numero mayor
   de paginas de memoria compartida.

  Nota:

   En la instalacion por omision de FreeBSD 4.5 en i386(TM), configure
   MAXDSIZ y DFLDSIZ como maximo a 1 GB. Si no lo hace podrian aparecer
   errores extranos como ORA-27102: out of memory y Linux Error: 12: Cannot
   allocate memory.

  10.7.8. Instalacion de SAP(R) R/3(R)

    10.7.8.1. Preparacion de los CDROM

   Hay que montar y desmontar muchos CD-ROM durante la instalacion. Si tiene
   suficientes unidades de CDROM, podria montarlos todos. Nosotros decidimos
   copiar el contenido de los CD-ROM a los directorios correspondientes:

 /oracle/SID/sapreorg/nombre-cd

   Donde nombre-cd era KERNEL, RDBMS, EXPORT1, EXPORT2, EXPORT3, EXPORT4,
   EXPORT5 y EXPORT6 para la instalacion 4.6B/IDES, y KERNEL, RDBMS, DISK1,
   DISK2, DISK3, DISK4 y LANG para la instalacion 4.6C SR2. Todos los nombres
   de fichero en los CDs montados deben estar en mayusculas; si no es asi use
   la opcion -g al montar. Utilice lo siguiente:

 # mount_cd9660 -g /dev/cd0a /mnt
 # cp -R /mnt/* /oracle/SID/sapreorg/nombre-cd
 # umount /mnt

    10.7.8.2. Ejecucion del "script" de instalacion

   Primero tendra que preparar un directorio install:

 # cd /oracle/SID/sapreorg
 # mkdir install
 # cd install

   Una vez arrancado el "script" de instalacion copiara casi todos los
   ficheros relevantes en el directorio install:

 # /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH

   La instalacion IDES (4.6B) incluye un sistema de demostracion
   SAP(R) R/3(R) totalmente personalizado, asi que hay seis CD EXPORT en
   lugar de solo tres. La plantilla de instalacion CENTRDB.R3S esta pensada
   para una instancia central estandar (R/3(R) y base de datos), no la
   instancia central IDES, asi que hay que copiar el CENTRDB.R3S
   correspondiente del directorio EXPORT1. Si no lo hace R3SETUP solo pedira
   tres CD EXPORT.

   La nueva version de SAP(R) 4.6C SR2 incluye cuatro CDs EXPORT. El fichero
   de parametros que controla los pasos de la instalacion es CENTRAL.R3S. A
   diferencia de versiones versiones anteriores, no existen patrones de
   instalacion por separado para una instancia central con o sin base de
   datos. SAP(R) utiliza un patron separado para la instalacion de la base de
   datos. Para reiniciar la instalacion despues es suficiente reiniciarla con
   el fichero original.

   Durante y despues de la instalacion, SAP(R) necesita que hostname devuelva
   solamente el nombre del sistema, no el nombre cualificado de dominio.
   Configure el nombre del equipo de ese modo, o active un alias mediante
   alias hostname='hostname -s' para orasid y para sidadm (y para root al
   menos durante los pasos de la instalacion realizados como root). Tambien
   puede configurar los ficheros .profile y .login de los usuarios que se
   crean durante la instalacion SAP(R).

    10.7.8.3. Inicio de R3SETUP 4.6B

   Asegurese de que LD_LIBRARY_PATH este configurada correctamente:

 # export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib

   Inicie R3SETUP como root desde el directorio de instalacion:

 # cd /oracle/IDS/sapreorg/install
 # ./R3SETUP -f CENTRDB.R3S

   El "script" le preguntara algunas cosas; le mostramos aqui entre corchetes
   la respuesta por defecto, y despues la respuesta que nosotros
   introdujimos:

      Pregunta             Por omision                     Entrada            
   Enter SAP      [C11]                          IDSIntro                     
   System ID      
   Enter SAP                                                                  
   Instance       [00]                           Intro
   Number         
   Enter SAPMOUNT [/sapmnt]                      Intro                        
   Directory      
   Enter name of                                                              
   SAP central    [troubadix.domain.de]          Intro
   host           
   Enter name of  [troubadix]                    Intro                        
   SAP db host    
   Select         [1] (WE8DEC)                   Intro                        
   character set  
   Enter Oracle                                                               
   server version 
   (1) Oracle     
   8.0.5, (2)                                    1Intro
   Oracle 8.0.6,  
   (3) Oracle     
   8.1.5, (4)     
   Oracle 8.1.6   
   Extract Oracle [1] (Yes, extract)             Intro                        
   Client archive 
   Enter path to  [/sapcd]                       /oracle/IDS/sapreorg/KERNEL  
   KERNEL CD      
   Enter path to  [/sapcd]                       /oracle/IDS/sapreorg/RDBMS   
   RDBMS CD       
   Enter path to  [/sapcd]                       /oracle/IDS/sapreorg/EXPORT1 
   EXPORT1 CD     
   Directory to                                                               
   copy EXPORT1   [/oracle/IDS/sapreorg/CD4_DIR] Intro
   CD             
   Enter path to  [/sapcd]                       /oracle/IDS/sapreorg/EXPORT2 
   EXPORT2 CD     
   Directory to                                                               
   copy EXPORT2   [/oracle/IDS/sapreorg/CD5_DIR] Intro
   CD             
   Enter path to  [/sapcd]                       /oracle/IDS/sapreorg/EXPORT3 
   EXPORT3 CD     
   Directory to                                                               
   copy EXPORT3   [/oracle/IDS/sapreorg/CD6_DIR] Intro
   CD             
   Enter path to  [/sapcd]                       /oracle/IDS/sapreorg/EXPORT4 
   EXPORT4 CD     
   Directory to                                                               
   copy EXPORT4   [/oracle/IDS/sapreorg/CD7_DIR] Intro
   CD             
   Enter path to  [/sapcd]                       /oracle/IDS/sapreorg/EXPORT5 
   EXPORT5 CD     
   Directory to                                                               
   copy EXPORT5   [/oracle/IDS/sapreorg/CD8_DIR] Intro
   CD             
   Enter path to  [/sapcd]                       /oracle/IDS/sapreorg/EXPORT6 
   EXPORT6 CD     
   Directory to                                                               
   copy EXPORT6   [/oracle/IDS/sapreorg/CD9_DIR] Intro
   CD             
   Enter amount                                                               
   of RAM for SAP                                850Intro (en Megabytes)
   + DB           
   Service Entry  [3600]                         Intro                        
   Message Server 
   Enter Group-ID [101]                          Intro                        
   of sapsys      
   Enter Group-ID [102]                          Intro                        
   of oper        
   Enter Group-ID [100]                          Intro                        
   of dba         
   Enter User-ID  [1000]                         Intro                        
   of sidadm      
   Enter User-ID  [1002]                         Intro                        
   of orasid      
   Number of      [2]                            Intro                        
   parallel procs 

   Si no ha copiado los CD a su disco duro el instalador SAP(R) no podra
   encontrar el CD que necesite (identifica los contenidos mediante fichero
   LABEL.ASC de cada CD) y por lo tanto le pedira que introduzca y monte el
   CD, o que confirme o introduzca la ruta de montaje.

   CENTRDB.R3S puede contener algun error. En nuestro caso, solicito el CD
   EXPORT4 mas de una vez, pero se le indico la clave correcta (6_LOCATION,
   luego 7_LOCATION, etc), asi que pudimos continuar introduciendo los
   valores correctos.

   Aparte de algunos problemas que se detallan mas adelante deberiamos ir
   llegando a la instalacion del software de base de datos Oracle(R).

    10.7.8.4. Iniciar R3SETUP 4.6C SR2

   Asegurese de que LD_LIBRARY_PATH este correctamente configurada. Tenga en
   cuenta de que es un valor diferente de la instalacion 4.6B con Oracle(R)
   8.0.5:

 # export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib

   Arranque R3SETUP como el usuario root desde el directorio de instalacion:

 # cd /oracle/PRD/sapreorg/install
 # ./R3SETUP -f CENTRAL.R3S

   El "script" le preguntara algunas cosas. Le presentamos la respuesta por
   omision entre corchetes y despues la respuesta que dimos nosotros):

            Pregunta              Por omision               Entrada           
   Enter SAP System ID         [C11]              PRDIntro                    
   Enter SAP Instance Number   [00]               Intro                       
   Enter SAPMOUNT Directory    [/sapmnt]          Intro                       
   Enter name of SAP central   [majestix]         Intro                       
   host                        
   Enter Database System ID    [PRD]              PRDIntro                    
   Enter name of SAP db host   [majestix]         Intro                       
   Select character set        [1] (WE8DEC)       Intro                       
   Enter Oracle server version                    2Intro                      
   (2) Oracle 8.1.7            
   Extract Oracle Client       [1] (Yes, extract) Intro                       
   archive                     
   Enter path to KERNEL CD     [/sapcd]           /oracle/PRD/sapreorg/KERNEL 
   Enter amount of RAM for SAP 2044               1800Intro (in Megabytes)    
   + DB                        
   Service Entry Message       [3600]             Intro                       
   Server                      
   Enter Group-ID of sapsys    [100]              Intro                       
   Enter Group-ID of oper      [101]              Intro                       
   Enter Group-ID of dba       [102]              Intro                       
   Enter User-ID of oraprd     [1002]             Intro                       
   Enter User-ID of prdadm     [1000]             Intro                       
   LDAP support                                   3Intro (no support)         
   Installation step completed [1] (continue)     Intro                       
   Choose installation service [1] (DB inst,file) Intro                       

   La creacion de usuarios da un error durante la instalacion en las fases
   OSUSERDBSID_IND_ORA (al crear al usuario orasid) y OSUSERSIDADM_IND_ORA
   (al crear el usuario sidadm).

   Mas adelante hablaremos de cierto problemas que aun tenemos pendientes,
   pero ha llegado el momento de instalar el software de base de datos
   Oracle(R).

  10.7.9. Instalacion de Oracle(R) 8.0.5

   Consulte los Readme de Oracle(R) y las notas de de SAP(R) sobre Linux y
   Oracle(R) DB por si hubiera algo que le pueda afectar. La mayoria de los
   problemas, por no decir todos, tienen su origen en bibliotecas
   incompatibles.

   Para mayor informacion sobre la instalacion de Oracle(R) dirijase al
   capitulo de instalacion de Oracle(R).

    10.7.9.1. Instalacion de Oracle(R) 8.0.5 con orainst

   Si quiere instalar Oracle(R) 8.0.5 necesitara unas cuantas bibliotecas
   para el enlazado, ya que Oracle(R) 8.0.5 fue enlazado con una glibc
   antigua (la de RedHat 6.0), pero RedHat 6.1 usa una nueva glibc. Tendra
   que instalar los siguientes paquetes para asegurarse que el reenlazado
   funcione:

   compat-libs-5.2-2.i386.rpm

   compat-glibc-5.2-2.0.7.2.i386.rpm

   compat-egcs-5.2-1.0.3a.1.i386.rpm

   compat-egcs-c++-5.2-1.0.3a.1.i386.rpm

   compat-binutils-5.2-2.9.1.0.23.1.i386.rpm

   Para mas informacion consulte las notas correspondientes de SAP(R) o los
   Readme de Oracle(R). Si no es posible (durante la instalacion no tuvimos
   tiempo suficiente para ello), se podrian utilizar los binarios originales,
   o los binarios reenlazados de un sistema original RedHat.

   Instale el paquete Tcl de RedHat para compilar el agente inteligente. Si
   no puede conseguir tcl-8.0.3-20.i386.rpm deberia funcionar una version mas
   reciente, por ejemplo tcl-8.0.5-30.i386.rpm para RedHat.

   Aparte del reenlazado, la instalacion es muy sencilla:

 # su - oraids
 # export TERM=xterm
 # export ORACLE_TERM=xterm
 # export ORACLE_HOME=/oracle/IDS
 # cd $ORACLE_HOME/orainst_sap
 # ./orainst

   Confirme todas las pantallas con Intro hasta que el software este
   instalado; todas excepto en la que debe quitar la marca de instalacion al
   visualizador de textos Oracle(R) en linea, ya que no existe para Linux.
   Oracle(R) intentara, gracias a esto, reenlazar con i386-glibc20-linux-gcc
   en lugar de gcc, egcs o i386-redhat-linux-gcc.

   Debido a la falta de tiempo decidimos usar los binarios de una version
   Oracle(R) 8.0.5 PreProduction, despues de que nuestro primer intento de
   que funcionara la version del CD RDBMS fallara y viendo que encontrar y
   utilizar los RPM correctos hubiera sido una pesadilla.

    10.7.9.2. Instalacion de Oracle(R) 8.0.5 "Pre-production Release" para Linux
    (Kernel 2.0.33)

   La instalacion es bastante facil. Monte el CD e inicie el instalador. Le
   preguntara por la ubicacion del directorio home de Oracle(R), y copiara en
   el todos los binarios. (Nosotros no eliminamos los restos de una
   instalacion RDBMS anterior que no termino de llego a terminar).

   Tras esto la base de datos Oracle(R) puede arrancar.

  10.7.10. Instalacion desde el fichero comprimido de Linux Oracle(R) 8.1.7

   Descomprima el fichero oracle81732.tgz (creado en el directorio de
   instalacion en un sistema Linux) y descomprimalo en /oracle/SID/817_32/.

  10.7.11. Continue con la instalacion SAP(R) R/3(R)

   Revise las configuraciones del entorno de los usuarios idsamd (sidadm) y
   oraids (orasid). Ambos deben tener los ficheros .profile, .login y .cshrc
   con hostname correctamente configurado. En caso que el nombre del sistema
   sea el nombre cualificado completo tendra que cambiar hostname a hostname
   -s en los tres ficheros anteriormente citados.

    10.7.11.1. Carga de la base de datos

   Hecho esto puede rearrancar R3SETUP o volver a arrancar la instalacion
   (dependiendo si eligio salir o no). R3SETUP crea las tablas y carga los
   datos (en 46B IDES, desde EXPORT1 a EXPORT6, en 46C desde DISK1 a DISK4)
   mediante R3load.

   Cuando se termina la carga de la base de datos (que puede llevar un par de
   horas) se le pediran algunas contrasenas. En una instalacion de prueba
   puede usar unas contrasenas de compromiso. (use una contrasena de verdad
   si le preocupa siquiera ligeramente la seguridad):

                  Pregunta                              Entrada               
   Enter Password for sapr3                sapIntro                           
   Confirum Password for sapr3             sapIntro                           
   Enter Password for sys                  change_on_installEnter             
   Confirm Password for sys                change_on_installEnter             
   Enter Password for system               managerIntro                       
   Confirm Password for system             managerIntro                       

   Aqui tuvimos problemas con dipgntab en la instalacion de 4.6B.

    10.7.11.2. Las escuchas

   Arranque las escuchas de Oracle(R) con el usuario orasid de la siguiente
   manera:

 % umask 0; lsnrctl start

   Si no lo hace asi vera un error ORA-12546, ya que los sockets no tendran
   los permisos correctos. Consulte la nota 072984 de SAP(R).

    10.7.11.3. Actualizacion de tablas MNLS

   Si tiene previsto importar idiomas que no sean Latin-1 en SAP(R) tiene que
   actualizar las tablas "Multi National Language Support". Tiene mas
   informacion sobre esto en las notas de SAP(R) OSS 15023 y 45619. Si no es
   su caso puede saltarse esta parte de la instalacion de SAP(R).

  Nota:

   Aunque no necesite soporte MNLS sigue siendo necesario que revise la tabla
   TCPDB y que la inicialice si no lo ha hecho ya. Consulte las notas 0015023
   y 0045619 de SAP(R) para mas informacion.

  10.7.12. Pasos para despues de la instalacion

    10.7.12.1. Solicitar una licencia SAP(R) R/3(R)

   Tiene que solicitar una licencia de SAP(R) R/3(R). No tendra mas remedio,
   puesto que la licencia temporal que se usa durante la instalacion tiene un
   limite de validez de cuatro semanas. Necesitara la llave hardware. Entre
   al sistema como usuario idsadm y ejecute saplicense:

 # /sapmnt/IDS/exe/saplicense -get

   Si ejecuta saplicense sin parametros vera una lista de opciones. Una vez
   que tenga la licencia en su poder la podra instalar del siguiente modo:

 # /sapmnt/IDS/exe/saplicense -install

   Se le solicitara que introduzca los siguientes valores:

 SAP SYSTEM ID   = SID, 3 caracteres
 CUSTOMER KEY    = llave hardware, 11 caracteres
 INSTALLATION NO = instalacion, 10 caracteres
 EXPIRATION DATE = yyyymmdd, normalmente "99991231"
 LICENSE KEY     = licencia, 24 caracteres

    10.7.12.2. Crear usuarios

   Cree un usuario dentro del cliente 000 (es necesario para algunas tareas
   que requieren hacerse dentro del cliente 000, pero con un usuario que no
   sea ni sap* ni ddic). Nosotros solemos elegir para este usuario el nombre
   de wartung (o service, ambos "servicio" en castellano). Los perfiles son
   sap_new y sap_all. Para mayor seguridad las contrasenas para usuarios por
   defecto dentro de todos los clientes deben cambiarse (incluidos los
   usuarios sap* y ddic).

    10.7.12.3. Configurar sistema de transporte, perfil, modos de operacion,
    etc.

   Dentro del cliente 000 y con un usuario que no sea ddic ni sap*, haga al
   menos lo siguiente:

                               Tarea                              Transaccion 
   Configurar sistema de transporte, por ejemplo como Stand-Alone STMS        
   Transport Domain Entity                                        
   Crear / editar perfil para el sistema                          RZ10        
   Mantener modos de operacion e instancias                       RZ04        

   Todos estos (y muchos mas) pasos para ejecutar despues de la instalacion
   se explican de forma detallada en las guias de instalacion de SAP(R).

    10.7.12.4. Editar initsid.sap (initIDS.sap)

   El fichero /oracle/IDS/dbs/initIDS.sap contiene la copia de seguridad del
   perfil de de SAP(R). Aqui es donde debe definir el tamano de la cinta a
   utilizar, tipo de conpresion, etc. Las siguientes modificaciones nos
   permitirian ejecutar sapdba / brbackup:

 compress = hardware
 archive_function = copy_delete_save
 cpio_flags = "-ov --format=newc --block-size=128 --quiet"
 cpio_in_flags = "-iuv --block-size=128 --quiet"
 tape_size = 38000M
 tape_address = /dev/nsa0
 tape_address_rew = /dev/sa0

   Explicacion:

   compress: La cinta que usamos es una HP DLT1 que tiene compresion por
   hardware.

   archive_function: Define el comportamiento por omision del almacenaje de
   los logs de Oracle(R): los nuevos ficheros de log se guardan en cinta, los
   ficheros de log que ya han sido guardados se guardan de nuevo y luego se
   borran. Asi se evitan muchos problemas si necesita recuperar la base de
   datos y una de las cintas esta danada.

   cpio_flags: por omision se usa -B, que asigna un tamano de bloque de
   5120 Bytes. HP recomienda un tamano de bloque de 32 K como minimo; usamos
   --block-size=128 para que sea de 64 K. Necesitaremos usar --format=newc
   porque tenemos numeros de inodo mayores a 65535. La ultima opcion
   (--quiet) se necesita ya que brbackup se queja en cuanto cpio imprime los
   numeros de bloque guardados.

   cpio_in_flags: Parametros necesarios para cargar datos desde la cinta. El
   formato es reconocido automaticamente.

   tape_size: La capacidad de almacenaje de la cinta. Por razones de
   seguridad (nosotros usamos compresion por hardware) el valor es
   ligeramente menor que el valor real.

   tape_address: El dispositivo (que no permite el rebobinado) que se usara
   con cpio.

   tape_address_rew: El dispositivo (que permite el rebobinado) que se usara
   con cpio.

    10.7.12.5. Aspectos de la configuracion una vez concluida la instalacion

   Los siguientes parametros SAP(R) deben personalizarse una vez concluida la
   instalacion (los ejemplos son para IDES 46B, 1 GB de memoria):

                     Nombre                                Valor              
   ztta/roll_extension                         250000000                      
   abap/heap_area_dia                          300000000                      
   abap/heap_area_nondia                       400000000                      
   em/initial_size_MB                          256                            
   em/blocksize_kB                             1024                           
   ipc/shm_psize_40                            70000000                       

   SAP(R) Note 0013026:

                    Nombre                                Valor               
   ztta/dynpro_area                          2500000                          

   SAP(R) Note 0157246:

                     Nombre                                Valor              
   rdisp/ROLL_MAXFS                           16000                           
   rdisp/PG_MAXFS                             30000                           

  Nota:

   En un sistema con 1 GB de memoria y los parametros arriba expuestos puede
   esperarse encontrar un consumo de memoria similar al siguiente:

 Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free

  10.7.13. Problemas durante la instalacion

    10.7.13.1. Reiniciar R3SETUP una vez arreglado el problema

   R3SETUP se detiene si encuentra un error. Si ha revisado los logs y ha
   corregido el error reinicie R3SETUP; hagalo seleccionando la opcion REPEAT
   en el paso donde R3SETUP se detuvo.

   Cuando quiera reiniciar R3SETUP inicielo con el fichero R3S
   correspondiente:

 # ./R3SETUP -f CENTRDB.R3S

   en el caso de 4.6B, o con

 # ./R3SETUP -f CENTRAL.R3S

   en 4.6C; no importa si el error ocurrio con CENTRAL.R3S o con
   DATABASE.R3S.

  Nota:

   En algunas etapas, R3SETUP asume que la base de datos y los procesos
   SAP(R) estan en marcha (como aquellos en los cuales se completaron los
   pasos). Si hay errores y por ejemplo la base de datos no se puede iniciar
   tendra que arrancar la base de datos y SAP(R) manualmente una vez haya
   corregido los errores y antes de iniciar R3SETUP nuevamente.

   No olvide iniciar tambien la escucha de Oracle(R) (como orasid con umask
   0; lsnrctl start) si tambien tuvo que detenerlo (si por ejemplo hubo que
   reiniciar el sistema).

    10.7.13.2. OSUSERSIDADM_IND_ORA durante R3SETUP

   Si R3SETUP se queja en este etapa edite la plantilla R3SETUP que este
   usando en ese momento (CENTRDB.R3S (en 4.6B) o CENTRAL.R3S o DATABASE.R3S
   (en 4.6C)). Ubique [OSUSERSIDADM_IND_ORA] o busque la unica entrada
   STATUS=ERROR y edite los siguientes valores:

 HOME=/home/sidadm (was empty)
 STATUS=OK (had status ERROR)
        

   Hecho esto, reinicie R3SETUP.

    10.7.13.3. OSUSERDBSID_IND_ORA durante R3SETUP

   Es posible que R3SETUP se queje tambien en esta etapa. El error aqui es
   similar al de la fase OSUSERSIDADM_IND_ORA. Edite la plantilla R3SETUP que
   este usando (CENTRDB.R3S (en 4.6B) o CENTRAL.R3S o DATABASE.R3S (en
   4.6C)). Ubique [OSUSERDBSID_IND_ORA] o busque la unica entrada
   STATUS=ERROR y edite los siguientes valores en esa seccion:

 STATUS=OK

   Hecho esto reinicie R3SETUP.

    10.7.13.4. oraview.vrf FILE NOT FOUND durante la instalacion de Oracle(R)

   No ha dejado sin seleccionar la opcion de instalar el visualizador de
   texto en linea de Oracle(R) antes de iniciar la instalacion. Esta
   seleccionado para ser instalado, aunque la aplicacion no existe para
   Linux. Deje sin seleccionar el producto en el menu de instalacion de
   Oracle(R) y reinicie la instalacion.

    10.7.13.5. TEXTENV_INVALID durante R3SETUP, o inicio de RFC o SAPgui

   Si se encuentra con este error significa que falta el locale correcto. La
   nota 0171356 de SAP(R) contiene una lista de RPM que deben instalarse
   (p.ej. saplocales-1.0-3, saposcheck-1.0-1 para RedHat 6.1). En caso de que
   ignore todos los errores relacionados y configure los STATUS
   correspondientes de ERROR a OK (en CENTRDB.R3S) cada vez que R3SETUP se
   queje y simplemente reinicie R3SETUP; el sistema SAP(R) no estara
   configurado correctamente y no podra conectarse al sistema con SAPgui,
   aunque el sistema pueda arrancar. Si intenta conectar con el antiguo
   SAPgui de Linux recibira los siguientes mensajes:

 Sat May 5 14:23:14 2001
 *** ERROR => no valid userarea given [trgmsgo. 0401]
 Sat May 5 14:23:22 2001
 *** ERROR => ERROR NR 24 occured [trgmsgi. 0410]
 *** ERROR => Error when generating text environment. [trgmsgi. 0435]
 *** ERROR => function failed [trgmsgi. 0447]
 *** ERROR => no socket operation allowed [trxio.c 3363]
 Speicherzugriffsfehler

   Este comportamiento se debe a que SAP(R) R/3(R) es incapaz de asignar
   correctamente un locale y tampoco puede configurarse a si mismo
   correctamente (faltan entradas en algunas tablas de la base de datos).
   Anada las siguientes entradas al fichero DEFAULT.PFL y podra conectarse a
   SAP(R) (vea la nota 0043288):

 abap/set_etct_env_at_new_mode = 0
 install/collate/active = 0
 rscp/TCP0B = TCP0B

   Reinicie el sistema SAP(R). Puede conectar al sistema, aunque la
   configuracion de idioma o de pais puede que no funcione como se espera de
   ella. Una vez corregidas las configuraciones de pais (y proporcionados los
   locales adecuados) puede eliminar estas entradas de DEFAULT.PFL y el
   sistema SAP(R) puede reiniciarse.

    10.7.13.6. ORA-00001

   Este error solo aparece con Oracle(R) 8.1.7 en FreeBSD 4.5. Se debe a que
   la base de datos Oracle(R) no puede inicializarse correctamente y se viene
   abajo, dejando semaforos y memoria compartida en el sistema. El siguiente
   intento de iniciar la base de datos produce el error ORA-00001.

   Encuentrelos con ipcs -a y eliminelos con ipcrm.

    10.7.13.7. ORA-00445 (Brackground Process PMON Did Not Start)

   Este error tuvo lugar con Oracle(R) 8.1.7. Aparece si se arranca la base
   de datos con el "script" startsap (por ejemplo startsap_majestix_00) con
   el usuario prdadm.

   Una solucion (entre otras) es iniciar la base de datos con el usuario
   oraprd en lugar de hacerlo con svrmgrl:

 % svrmgrl
 SVRMGR> connect internal;
 SVRMGR> startup;
 SVRMGR> exit

    10.7.13.8. ORA-12546 (Start Listener with Correct Permissions)

   Inicie la escucha de Oracle(R) como usuario oraids con la siguiente orden:

 # umask 0; lsnrctl start

   De no ser asi puede encontrarse con el error ORA-12546, ya que los sockets
   no tendran los permisos adecuados. Consulte la nota de SAP(R) 0072984.

    10.7.13.9. ORA-27102 (Out of Memory)

   Este error ocurre al tratar de usar valores mayores a 1 GB
   (1024x1024x1024) en MAXDSIZ y DFLDSIZ. Recibiremos, ademas, este otro
   error: Linux Error 12: Cannot allocate memory.

    10.7.13.10. [DIPGNTAB_IND_IND] during R3SETUP

   Consulte la nota de SAP(R) 0130581 de (R3SETUP step (DIPGNTAB terminates).
   Por alguna razon durante la instalacion especifica IDES el proceso de
   instalacion no usaba el nombre de sistema correcto SAP(R) "IDS" sino la
   cadena vacia "". Esto provocaba algunos errores menores en el acceso a
   directorios, ya que las rutas se generan dinamicamente en base a dicho SID
   (en este caso IDS). En lugar de ejecutar los accesos del siguiente modo :

 /usr/sap/IDS/SYS/...
 /usr/sap/IDS/DVMGS00

   se usaron las siguientes rutas:

 /usr/sap//SYS/...
 /usr/sap/D00

   Para continuar con la instalacion creamos un enlace y un directorio
   adicional:

 # pwd
 /compat/linux/usr/sap
 # ls -l
 total 4
 drwxr-xr-x 3  idsadm sapsys 512 May 5 11:20 D00
 drwxr-x--x 5  idsadm sapsys 512 May 5 11:35 IDS
 lrwxr-xr-x 1  root   sapsys 7 May 5 11:35 SYS -> IDS/SYS
 drwxrwxr-x 2  idsadm sapsys 512 May 5 13:00 tmp
 drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans

   Encontramos una descripcion de este comportamiento en las notas de SAP(R).
   (0029227 y 0008401). En la instalacion de SAP(R) 4.6C no tuvimos estos
   problemas.

    10.7.13.11. [RFCRSWBOINI_IND_IND] during R3SETUP

   Durante la instalacion de SAP(R) 4.6C nos encontramos con este error, cuyo
   origen esta en un error que tuvo lugar anteriormente durante la propia
   instalacion. Busque en sus ficheros de log y corrija el problema.

   Si despues de buscar en los logs el error resulta ser el correcto (revise
   las notas de SAP(R)), puede poner el STATUS del paso donde se produce el
   error de ERROR a OK (en el fichero CENTRDB.R3S) y reiniciar R3SETUP. Una
   vez finalizada la instalacion, tiene que ejecutar el informe RSWBOINS de
   la transaccion SE38. Consulte la nota SAP(R) 0162266 para mas informacion
   sobre las fases RFCRSWBOINI y RFCRADDBDIF.

    10.7.13.12. [RFCRADDBDIF_IND_IND] during R3SETUP

   Aqui sucede lo mismo de antes, asegurese, revisando los logs, de que la
   causa de este error no este en algun problema previo.

   Si en la nota de SAP(R) 0162266 esta la solucion ponga el STATUS del paso
   donde se produce el error de ERROR a OK (en el fichero CENTRDB.R3S) y
   reinicie R3SETUP. Una vez finalizada la instalacion ejecute el informe
   RADDBDIF desde la transaccion SE38.

    10.7.13.13. sigaction sig31: File size limit exceeded

   Este error ocurrio durante el inicio del proceso SAP(R) disp+work. Si
   inicia SAP(R) con el "script" startsap se inician los subprocesos que se
   separan y hacen el "trabajo sucio" de iniciar el resto de procesos de
   SAP(R), pero es importante saber que el propio "script" no notara si algo
   ha ido mal.

   Puede revisar si los procesos SAP(R) se iniciaron correctamente con ps ax
   | grep SID, que le proporcionara una lista de todos los procesos de
   Oracle(R) y de SAP(R). Si parece que algunos procesos no estan, o si no
   puede conectarse al sistema SAP(R) revise los logs que encontrara en
   /usr/sap/SID/DVEBMGSnr/work/. Los ficheros que debe revisar son dev_ms y
   dev_disp.

   La senal 31 aparece si la cantidad de memoria compartida asignada a
   Oracle(R) y SAP(R) supera la definida dentro del fichero de configuracion
   del kernel y puede resolverse usando un valor mayor:

 # larger value for 46C production systems:
 options SHMMAXPGS=393216
 # smaller value sufficient for 46B:
 #options SHMMAXPGS=262144

    10.7.13.14. Start of saposcol Failed

   Hay algunos problemas con el programa saposcol (version 4.6D). El sistema
   SAP(R) utiliza saposcol para recoger datos del rendimiento del sistema.
   Este programa no es necesario para usar el sistema SAP(R), asi que el
   problema puede considerarse como poco importante. La version mas antigua
   (4.6B) funciona, pero no recoge todos los datos (muchas llamadas
   devolveran un 0, por ejemplo el uso de CPU).

10.8. Temas avanzados

   Si siente curiosidad por saber como funciona la compatibilidad con Linux
   esta es la seccion que debe leer. La mayor parte de lo que sigue esta
   basado casi en su totalidad en un mensaje enviado por Terry Lambert
   <tlambert@primenet.com> a la lista lista de charla de FreeBSD (Message ID:
   <199906020108.SAA07001@usr09.primenet.com>).

  10.8.1. ?Como funciona?

   FreeBSD dispone de una abstraccio denominada "cargador de clase en
   ejecucion". Esto no es mas que un bloque de codigo incrustado en la
   llamada execve(2) del sistema.

   Historicamente las plataformas UNIX(R) disponian de un unico cargador de
   binarios, que en ultima instancia (fallback) recurria al cargador #! para
   ejecutar cualesquiera interpretes o scripts de la shell. Ese cargador
   unico examinaba el numero magico (generalmente los 4 u 8 primeros bytes
   del fichero) para ver si era un binario reconocible por el sistema y, en
   tal caso, invocaba al cargador binario.

   Si no era de tipo binario, la llamada execve(2) devolvia un error y la
   shell intentaba empezar a ejecutarlo como ordenes shell, tomando por
   defecto como punto de partida "la shell actual, sea cual sea".

   Posteriormente se penso en hacer una modificacion de manera que sh(1)
   examinara los dos primeros caracteres, de modo que si eran :\n se llamaba
   a la shell csh(1) en su lugar (parece ser que en SCO fueron los primeros
   en utilizar ese truco).

   Lo que ocurre ahora es que FreeBSD dispone de una lista de cargadores, en
   lugar de uno solo. FreeBSD recorre esa lista de cargadores, con un
   cargador generico #! que sabe reconocer los interpretes en base a los
   caracteres que siguen al siguiente espacio en blanco, con /bin/sh como
   ultimo recurso.

   Para dar soporte a la ABI ("Application Binary Interface") de Linux,
   FreeBSD interpreta el numero magico como un binario ELF ("Executable and
   Linking Format"): En este punto no hace distincion entre FreeBSD,
   Solaris(TM), Linux(R) o cualquier otro SO que tenga un tipo de imagen ELF.

   El cargador ELF busca entonces una marca (brand) especial, una seccion de
   comentarios en la imagen ELF que no esta presente en los binarios ELF de
   SVR4/Solaris(TM).

   Para que los binarios de Linux funcionen deben estar marcados con
   brandelf(1) como tipo Linux:

 # brandelf -t Linux file

   Hecho esto el cargador ELF vera la marca Linux en el fichero.

   Cuando el cargador ELF ve la marca Linux sustituye un puntero en la
   estructura proc. Todas las llamadas del sistema se indexan a traves de
   este puntero (en un sistema UNIX(R) tradicional seria el <<array>> de
   estructura sysent[] que contiene las llamadas del sistema). Ademas, el
   proceso se marca con unos indicadores ("flags") para que el vector trampa
   del codigo de envio senales lo maneje de una forma determinada, asi como
   otros arreglos (menores) que seran utilizados por el modulo Linux del
   kernel.

   El vector de llamada del sistema Linux contiene, entre otras cosas, una
   lista de entradas sysent[] cuyas direcciones residen en el modulo del
   kernel.

   Cuando el binario Linux realiza una llamada al sistema, el codigo trampa
   extrae el puntero a la funcion de la llamada del sistema de la estructura
   proc, y asi obtiene los puntos de entrada a las llamadas del sistema
   Linux, no las de FreeBSD.

   Ademas, el modo Linux cambia la raiz de las busquedas de una forma
   dinamica. En efecto, esto es lo que hace la opcion union cuando se monta
   un sistema de ficheros (!y que no es lo mismo que el sistema de ficheros
   unionfs!). Primero se hace un intento de buscar el fichero en el
   directorio /compat/linux/ruta-original y solo despues, si lo anterior
   falla, se repite la busqueda en el directorio /ruta-original. Esto permite
   que se puedan ejecutar binarios que necesitan de otros binarios (por
   ejemplo las herramientas de programacion ("toolchain") de Linux pueden
   ejecutarse en su totalidad bajo la ABI de Linux). Esto significa tambien
   que los binarios Linux pueden cargar y ejecutar binarios FreeBSD si los
   binarios Linux equivalentes no se hallan presentes y que se puede poner
   una orden uname(1) en el arbol de directorios /compat/linux para poder
   estar seguros de que los binarios Linux no puedan decir que no estaban
   ejecutandose en Linux.

   En efecto, hay un kernel Linux en el kernel FreeBSD; las distintas
   funciones subyacentes que implementan todos los servicios proporcionados
   por el kernel son identicas en ambas, las tablas de entradas de llamadas
   del sistema en FreeBSD y en Linux: operaciones del sistema de ficheros,
   operaciones de memoria virtual, envio de senales IPC System V, etc. La
   unica diferencia es que los binarios FreeBSD reciben sus funciones de
   conexion ("glue") y los binarios Linux las suyas (la mayoria de los
   sistemas operativos mas antiguos solo tienen sus propias funciones de
   conexion: direcciones de funciones en un "array" de estructura sysent[]
   estatica y global, en lugar de direcciones de funciones que se extraen a
   partir de un puntero inicializado dinamicamente en la estructura proc del
   proceso que hace la llamada).

   ?Cual es entonces la ABI nativa de FreeBSD? No importa. Basicamente, la
   unica diferencia es (ahora mismo; esto podria cambiar y probablemente lo
   hara en una release futura) que las funciones de conexion de FreeBSD estan
   enlazadas estaticamente en el kernel mientras que las de Linux pueden
   estarlo tambien estaticamente o se puede acceder a ellas por medio de un
   modulo del kernel.

   Bien, pero ?de verdad es esto una emulacion? No. Es una implementacion
   ABI, no una emulacion. No hay un emulador involucrado (ni un simulador,
   para adelantarnos a la siguiente pregunta).

   Entonces ?por que a veces se le llama "emulacion Linux"? !Para hacer mas
   dificil el vender FreeBSD! En serio, se debe a que la primera
   implementacion se hizo en un momento en que realmente no habia ninguna
   palabra distinta a esa para describir lo que se estaba haciendo; decir que
   FreeBSD ejecutaba binarios Linux no era cierto si no se compilaba el
   codigo o se cargaba un modulo; hacia falta una forma de describir todo
   esto y acabamos usando "emulador Linux".

                     Parte III. Administracion del sistema.

   Los restantes capitulos de este libro cubren todos los aspectos de
   administracion de un sistema FreeBSD. Cada capitulo comienza describiendo
   lo que sera aprendido una vez finalizada la lectura, explicando tambien
   los conocimientos minimos necesarios para una comprension satisfactoria
   del texto.

   Estos capitulos estan disenados para leerse cuando se necesita la
   informacion. No es necesario leerlos en un determinado orden ni es
   necesario leerlos todos antes de comenzar a usar FreeBSD.

   Tabla de contenidos

   11. Configuracion y Adaptacion del Sistema

                11.1. Configuracion de Tarjetas de Red

                11.2. "Arrancar servicios"

                11.3. "Soft Updates"

                11.4. Anadir espacio swap

   12. El proceso de arranque en FreeBSD

                12.1. Sinopsis

                12.2. El problema que representa arrancar el sistema

                12.3. El RMA y las etapas de arranque uno, dos y tres

                12.4. Interaccion con el kernel durante el arranque

                12.5. Device Hints

                12.6. Init: inicializacion del proceso de control

                12.7. Secuencia de apagado

   13. Usuarios y administracion basica de cuentas

                13.1. Sinopsis

                13.2. Introduccion

                13.3. La cuenta superusuario

                13.4. Cuentas de sistema

                13.5. Cuentas de usuario

                13.6. Modificacion de cuentas

                13.7. Limitar a los usuarios

                13.8. Personalizar a los usuarios

                13.9. Grupos

   14. Seguridad

                14.1. Sinopsis

                14.2. Introduccion

                14.3. Asegurar FreeBSD

                14.4. DES, MD5 y Crypt

                14.5. Contrasenas de un solo uso

                14.6. TCP Wrappers

                14.7. KerberosIV

                14.8. Kerberos5

                14.9. OpenSSL

                14.10. VPN sobre IPsec

                14.11. OpenSSH

                14.12. Listas de control de acceso a sistemas de ficheros

                14.13. Monitorizacion de fallos de seguridad de aplicaciones

                14.14. FreeBSD Security Advisories

                14.15. Contabilidad de procesos

   15. Jaulas

                15.1. Sinopsis

                15.2. Terminos relacionados con las jaulas

                15.3. Introduccion

                15.4. Creacion y gestion de jaulas

                15.5. Administracion y personalizacion a fondo

                15.6. Uso de las jaulas

   16. Mandatory Access Control

                16.1. Sinopsis

                16.2. Terminos clave en este capitulo

                16.3. Explicacion de MAC

                16.4. Las etiquetas MAC

                16.5. Configuracion de modulos

                16.6. El modulo MAC ifoff

                16.7. El modulo MAC portacl

                16.8. Politicas de etiquetas MAC

                16.9. El modulo MAC partition

                16.10. El modulo de seguridad multinivel MAC

                16.11. El modulo MAC Biba

                16.12. El modulo MAC LOMAC

                16.13. Implementacion de un entorno seguro con MAC

                16.14. Otro ejemplo: Uso de MAC para restringir un servidor
                web

                16.15. Depuracion de errores en MAC

   17. Auditoria de eventos de seguridad

                17.1. *

   18. Almacenamiento

                18.1. Sinopsis

                18.2. Nombres de dispositivo

                18.3. Anadir discos

                18.4. RAID

                18.5. Dispositivos de almacenamiento USB

                18.6. Creacion y uso de medios opticos (CD)

                18.7. Crear y utilizar medios opticos (DVDs)

                18.8. Creacion y uso de disquetes (floppies)

                18.9. Creacion y uso de cintas de datos

                18.10. Respaldos en disquetes

                18.11. Bases para respaldos

                18.12. Sistemas de ficheros en red, memoria y respaldados en
                fichero

                18.13. Instantaneas ("snapshots") de sistemas de ficheros

                18.14. Cuotas en sistemas de ficheros

                18.15. Cifrado de particiones de disco

   19. GEOM: Marco de trabajo modular de transformacion de discos

                19.1. Sinopsis

                19.2. Introduccion a GEOM

                19.3. RAID0 - Distribucion por bandas

                19.4. RAID1 - Replicacion

   20. El Gestor de Volumenes Vinum

                20.1. Sinopsis

                20.2. Los Discos son Demasiado Pequenos

                20.3. Cuellos de Botella en el Acceso

                20.4. Integridad de Datos

                20.5. Objetos Vinum

                20.6. Ejemplos

                20.7. Esquema de Nombres de los Objetos

                20.8. Configuracion de Vinum

                20.9. Uso de Vinum en el Sistema de Ficheros Raiz

   21. Virtualizacion

                21.1. *

   22. Localizacion - Uso y configuracion de I18N/L10N

                22.1. Sinopsis

                22.2. Lo basico

                22.3. Uso de la localizacion

                22.4. Compilacion de programas con soporte para I18N

                22.5. Localizacion de FreeBSD a idiomas especificos

   23. Lo ultimo de lo ultimo

                23.1. Sinopsis

                23.2. FreeBSD-CURRENT vs. FreeBSD-STABLE

                23.3. Sincronizacion de su codigo fuente

                23.4. Uso de make world

                23.5. Redes pequenas

Capitulo 11. Configuracion y Adaptacion del Sistema

   Tabla de contenidos

   11.1. Configuracion de Tarjetas de Red

   11.2. "Arrancar servicios"

   11.3. "Soft Updates"

   11.4. Anadir espacio swap

   Configuracion y Adaptacion del Sistema

11.1. Configuracion de Tarjetas de Red

   Pendiente de Traduccion

11.2. "Arrancar servicios"

   Pendiente de Traduccion

11.3. "Soft Updates"

   Pendiente de Traduccion

11.4. Anadir espacio swap

   Pendiente de traduccion

Capitulo 12. El proceso de arranque en FreeBSD

   Tabla de contenidos

   12.1. Sinopsis

   12.2. El problema que representa arrancar el sistema

   12.3. El RMA y las etapas de arranque uno, dos y tres

   12.4. Interaccion con el kernel durante el arranque

   12.5. Device Hints

   12.6. Init: inicializacion del proceso de control

   12.7. Secuencia de apagado

12.1. Sinopsis

   Al proceso de inicio del sistema y carga del sistema operativo se le
   conoce como "mecanismo de arranque" (bootstrap), o simplemente "arranque"
   (booting). El proceso de arranque de FreeBSD provee de gran flexibilidad
   al configurar lo que ocurre cuando se inicia el sistema, permitiendole
   seleccionar de diferentes sistemas operativos instalados en el mismo
   ordenador, o inclusive diferentes versiones del mismo sistema oprativo o
   kernels instalados.

   Este capitulo detalla las opciones de configuracion que puede manejar y
   como personalizar el proceso de arranque de FreeBSD. Esto incluye todo lo
   que sucede hasta que el kernel de FreeBSD comienza con la comprobacion de
   dispositivos y se inicializa init(8). En caso de que usted desconozca
   cuando ocurre todo esto, esto sucede cuando el color del texto que aparece
   al iniciar el sistema, cambia de blanco a gris.

   Una vez que concluya con la lectura de este capitulo, usted sabra:

     * Cuales son los componentes del mecanismo de arranque de FreeBSD, y
       como es que interactuan entre si.

     * Las opciones que puede manejar con los componentes del mecanismo de
       arranque de FreeBSD, para controlar el proceso de inicio del sistema.

  Solo x86:

   El presente capitulo describe unicamente el proceso de inicio, para
   sistemas FreeBSD que corren en plataformas Intel x86.

12.2. El problema que representa arrancar el sistema

   El encender una computadora e iniciar el sistema operativo, trae consigo
   un dilema interesante. Por definicion, la computadora no sabe hacer nada,
   hasta que el sistema operativo ha sido cargado. Esto incluye la ejecucion
   de programas desde el disco duro. Asi que este es el dilema; si la
   computadora no sabe hacer nada hasta que se cargue el sistema operativo, y
   el sistema operativo es un conjunto de programas que residen en el disco
   duro, ?Como es que arranca el sistema operativo?

   Este problema se asemeja a un problema del libro Las Aventuras del Baron
   Munchausen. Donde un personaje ha caido parcialmente en un hoyo, y ha
   podido salir al tomarse de las cintas de sus botas y jalarse hacia fuera.
   En los anos mozos de la computacion, el termino utilizado para hablar
   sobre el proceso de carga del sistema operativo era mecanismo de arranque
   (bootstrap), que por efectos de simplificacion ahora conocemos como
   "arranque" (booting).

   En equipos con arquitectura x86, el Sistema Basico de Entrada/Salida
   (BIOS) es el responsable de cargar el sistema operativo. Para hacer esto,
   el BIOS busca en el disco duro el Registro Maestro de Arranque (RMA) (N de
   T. Conocido como MBR-Master Boot Record), el cual debe localizarse en un
   lugar especifico del disco. El BIOS cuenta con suficiente informacion,
   para cargar y ejecutar el RMA, y asumir que el RMA puede encargarse del
   resto de las tareas necesarias en la carga del sistema operativo.

   Si usted solo cuenta con un sistema operativo instalado en su disco duro,
   el RMA estandar sera suficiente. Este RMA buscara la primer particion del
   disco que pueda arrancar, y posteriormente ejecutara el codigo restante de
   dicha particion, para efecto de completar la carga del sistema operativo.

   Si usted cuenta con varios sistemas operativos instalados en su disco,
   entonces puede hacer uso de un RMA diferente, uno que despliegue una lista
   de los diferentes sistemas operativos, y le permita escoger cual de ellos
   desea que se cargue. FreeBSD cuenta con un RMA de este tipo que puede ser
   instalado, asi como otros distribuidores de sistemas operativos cuentan
   con RMAs alternativos.

   En el caso de FreeBSD, el resto del mecanismo de arranque, esta dividido
   en tres etapas. La primer etapa es ejecutada por al RMA, que sabe lo
   suficiente como para poner a la computadora en un estado especifico y
   ejecutar la segunda etapa. La segunda etapa puede hacer un poco mas que
   esto, antes de ejecutar la tercer etapa. La tercer etapa finaliza el
   trabajo de carga del sistema operativo. El trabajo es dividido en tres
   etapas, debido a las limitantes que tiene una PC, en cuanto al tamano de
   los programas a ejecutar, durante las etapas uno y dos. El encadenar estas
   tareas, le permiten a FreeBSD contar con un arrancador mas flexible.

   Posteriormente el kernel es inicializado y comienza con la comprobacion de
   dispositivos, y prepararlos para su uso. Una vez que el proceso de
   arranque del kernel ha finalizado, el kernel transfiere el control al
   proceso de usuario init(8), quien se asegura de que los discos se
   encuentren en buen estado para su uso. Posteriormente init(8) inicia la
   configuracion fuente a nivel de usuario, que monta los sistemas de
   ficheros, configura las tarjetas de red para que pueden comunicarse en la
   red, y comunmente inicia todos los procesos que normalmente son ejecutados
   en un sistema FreeBSD al arrancar el mismo.

12.3. El RMA y las etapas de arranque uno, dos y tres

  12.3.1. RMA, /boot/boot0

   El RMA de FreeBSD, se localiza en /boot/boot0. Este es una copia del RMA,
   ya que el RMA real debe localizarse en una parte especial del disco duro,
   fuera de la area de FreeBSD.

   El fichero boot0 es muy simple, dado que el programa en el RMA solo puede
   ser de 512 bytes. Si usted ha instalado el RMA de FreeBSD y ha instalado
   varios sistemas operativos en sus discos duros, entonces al momento de
   arrancar el sistema, visualizara una pantalla similar a la siguiente.

   Ejemplo 12.1. Pantalla boot0

 F1 DOS
 F2 FreeBSD
 F3 Linux
 F4 ??
 F5 Drive 1

 Default: F2

   Es sabido que otros sistemas, en particular Windows 95, sobreescriben el
   RMA con el suyo. Si esto le sucede, o bien desea reemplazar su RMA actual
   con el RMA de FreeBSD, entonces puede utilizar las siguientes ordenes.

 # fdisk -B -b /boot/boot0 dispositivo

   Donde dispositivo es aquel, desde el cual usted pretende arrancar el
   sistema, tal como ad0 para el disco conectado al primer IDE, ad2 para el
   disco maestro conectado al IDE secundario, da0 para el primer disco SCSI,
   y asi sucesivamente.

   Por otro lado, si usted es un usuario de Linux, y prefiere que la
   aplicacion LILO controle el proceso de arranque, puede editar el fichero
   /etc/lilo.conf para incluir a FreeBSD, o bien seleccionar la opcion Leave
   The Master Boot Record Untouched durante el proceso de instalacion. Si ha
   instalado el gestor de arranque de FreeBSD, puede arrancar Linux y
   modificar el fichero de configuracion de LILO, /etc/lilo.conf, anadiendo
   la siguiente opcion:

 other=/dev/hdXY
 table=/dev/hdb
 loader=/boot/chain.b
 label=FreeBSD

   lo que permitira el arranque de FreeBSD y Linux, por medio de LILO. En
   nuestro ejemplo hemos utilizado XY para especificar el disco utilizado y
   su particion. Si usted utiliza un sistema SCSI, debera cambiar /dev/hdXY
   por algo similar a /dev/sdXY, que nuevamente utiliza la sintaxis XY. La
   opcion loader=/boot/chain.b puede omitirse si usted cuenta con ambos
   sistemas operativos en el mismo disco. Una vez que esto se ha completado,
   puede ejecutar /sbin/lilo -v para que se actualicen los cambios en el
   sistema, lo cual debera verificarse con los mensajes que aparezcan en
   pantalla.

  Nota:

   N de T: La opcion mencionada como; Leave The Master Boot Record Untouched,
   se mostrara "tal cual" aparece en este documento, una vez que ha terminado
   la fase de particion del disco duro.

  12.3.2. Etapa uno, /boot/boot1, y etapa dos, /boot/boot2

   Conceptualmente las estapas uno y dos, son parte del mismo programa, en la
   misma area del disco. Por cuestiones de espacio se han dividido en dos,
   pero estas siempre se instalaran de manera conjunta.

   Estas son localizadas en el sector de arranque, de la particion de
   arranque, que es donde boot0, o cualquier otro programa del RMA espera
   encontrar el programa que dara continuacion al proceso de arranque. Los
   ficheros localizados bajo el directorio /boot son copias de los ficheros
   reales, que se localizan fuera del sistema de ficheros de FreeBSD.

   El fichero boot1 es muy simple, en virtud de que solo puede tener un
   tamano de 512 bytes, y conocer simplemente del etiquetador de discos de
   FreeBSD (disklabel), el cual almacena la informacion de las particiones,
   para efecto de localizar y ejecutar boot2.

   El fichero boot2 es un poco mas sofisticado, y comprende lo suficiente del
   sistema de ficheros de FreeBSD como para localizar ficheros en el, y puede
   proveer una interfaz simple, para seleccionar el kernel o cargador que
   debera ejecutarse.

   En virtud de que el cargador (loader) es mucho mas sofisticado, y provee
   una configuracion de arranque mas sencilla de utilizar, boot2 la ejecuta
   normalmente, una vez que ha terminado de solicitar el arranque del kernel
   directamente.

   Ejemplo 12.2. Pantalla de boot2

 >> FreeBSD/i386 BOOT
 Default: 0:ad(0,a)/kernel
 boot:

   Si alguna vez requiere reemplazar los ficheros boot1 y boot2 instalados,
   utilice disklabel(8).

 # disklabel -B particion

   Donde particion es el disco y particion del cual pretende arrancar el
   sistema, tal como ad0s1 para la primer particion del disco
   Mastro-Primario.

  Modo peligrosamente dedicado:

   Si solo utiliza el nombre del disco, tal como ad0, al usar disklabel(8)
   creara un disco peligrosamente dedicado, sin particion alguna. Seguramente
   esto no es lo que desea hacer, asi que asegurese dos veces antes de
   presionar la tecla Return cuando utilice disklabel(8).

  12.3.3. Etapa tres, /boot/loader (cargador de arranque)

   El cargador es la etapa final de las tres etapas del mecanismo de
   arranque, y esta localizado en el sistema de ficheros, normalmente como
   /boot/loader.

   El cargador pretende ser un metodo amistoso de configuracion, utilizando
   una serie de ordenes integradas de facil uso, respaldado por un interprete
   mas poderoso, con una serie de ordenes de mayor complejidad.

    12.3.3.1. Flujo del programa cargador

   Durante la inicializacion del sistema, el cargador hara una comprobacion
   en busca de una consola y discos, y sabra de que disco se encuentra
   arrancando. Establecera las variables necesarias, y posteriormente es
   iniciado el interprete donde se pueden introducir ordenes desde un
   "script" o de manera interactiva.

   Posteriormente el cargador leera el fichero /boot/loader.rc, que por
   default lee la informacion del fichero /boot/defaults/loader.conf que a su
   vez, establece las variables correspondientes y verifica en el fichero
   /boot/loader.conf los cambios locales que se hayan hecho, para establecer
   valores de las variables modificadas. Una vez llevado a cabo esto,
   loader.rc actua sobre estas variables, cargando cualquier modulo y kernel
   seleccionado.

   Finalmente, y por default, el cargador hace una pausa contando 10 segundos
   y en espera de que al presionar una tecla se interrumpa el proceso, de no
   ser asi, procedera a arrancar el kernel. En el caso de que al hacer esta
   pausa, se haya presionado una tecla (diferente de Return), el proceso sera
   interrumpido y se nos mostrara un "prompt", que entiende el conjunto de
   ordenes de facil-uso, y donde el usuario puede ajustar ciertas variables,
   cargar y descargar todos los modulos, y tambien arrancar o reiniciar el
   sistema.

    12.3.3.2. Ordenes internas del cargador

   A continuacion se presentan las ordenes mas comunes del cargador. Para ver
   una descripcion detallada de los mismos, por favor consulte la pagina de
   manual de loader(8)

   autoboot segundos

           Procede a iniciar el arranque del sistema, si es que no es
           interrumpido el periodo dado, en segundos. Despliega una cuenta
           regresiva, y el tiempo dado es de 10 segundos.

   boot [-opciones] [nombre_del_kernel]

           Procede a iniciar el kernel de manera inmediata, con las opciones
           dadas, si es que fuera el caso y el kernel especificado, si es que
           se especifica alguno.

   boot-conf

           Rehace la configuracion automatica de modulos en funcion a las
           variables definidas, como sucede al arrancar. Esta opcion solo
           tiene sentido utilizarla, si en primer lugar hemos usado unload, y
           hemos modificado alguna variable, siendo lo mas comun el kernel.

   help [tema]

           Muestra la ayuda de un tema especifico, que lee del fichero
           /boot/loader.help. Si el tema que se indica es index, entonces se
           mostrara una lista de todos los temas disponibles.

   include fichero ...

           Procesa el fichero que se ha especificado. El fichero se lee e
           interpreta linea por linea. Cualquier error detendra
           inmediatamente a include.

   load [-t tipo] fichero

           Carga el kernel, modulo del kernel, o el fichero del tipo dado, en
           base al fichero especificado. Cualquier argumento que se anada,
           sera pasado al fichero.

   ls [-l] [ruta]

           Despliega un listado de todos los ficheros que se localizan en la
           ruta especificada, o en el directorio raiz, si es que no se le
           especifica ruta alguna. Si se utiliza la opcion -l, tambien se
           mostrara el tamano de los ficheros.

   lsdev [-v]

           Nos muestra una lista de todos los dispositivos desde los cuales
           puede ser posible cargar modulos. Si se incluye la opcion -v, el
           listado que se obtiene cuenta con mas detalle.

   lsmod [-v]

           Despliega los modulos cargados. Si se utiliza la opcion -v, se
           mostraran mas detalles.

   more fichero

           Despliega el contenido del fichero especificado, haciendo una
           pausa a cada numero determinado de LINEAS mostradas.

   reboot

           Reinicia el sistema de forma inmediata.

   set variable, set variable=valor

           Especifica los valores de las variables de entorno del cargador.

   unload

           Remueve todos los modulos cargados.

    12.3.3.3. Ejemplos de uso del cargador

   He aqui unos ejemplos practicos sobre el uso correcto del cargador.

     * Para arrancar simplemente su kernel usual, pero en modo mono-usuario,
       debera hacer lo siguiente:

 boot -s

     * Para descargar su kernel usual y sus modulos correspondientes, y
       posteriormente cargar su kernel anterior (o cualquier otro):

 unload
 load kernel.old

       Puede utilizar kernel.GENERIC para referirse al kernel generico actual
       que viene con la instalacion, o bien puede utilizar kernel.old para
       hacer referencia al kernel anterior (por ejemplo, cuando ha
       actualizado su sistema o ha recompilado su propio kernel).

  Nota:

       Utilice lo siguiente para cargar sus modulos actuales con otro kernel:

 unload
 set kernel="kernel.old"
 boot-conf

     * Para cargar un escrito de configuracion (script que de forma
       automatica hara todo lo que normalmente hace usted de forma manual al
       momento de ejecutarse el configurador de arranque):

 load -t escrito_de_configuracion /boot/kernel.conf

12.4. Interaccion con el kernel durante el arranque

   Una vez que el kernel ha sido iniciado, ya sea por el cargador (que es lo
   comun) o bien por boot2 (sobrepasando el cargador), examinara las opciones
   de arranque, en busca de cambios, y ajustar su comportamiento en caso de
   ser necesario.

  12.4.1. Opciones de arranque del kernel

   He aqui las opciones de arranque mas comunes:

   -a

           durante la inicializacion del kernel, pregunta por los
           dispositivos a utilizar, para montar el sistema de ficheros raiz.

   -C

           arranque desde una unidad de CDROM.

   -c

           ejecuta UserConfig, la utilidad de configuracion de arranque del
           kernel.

   -s

           arranca el sistem en modo mono-usuario.

   -v

           imprime mensajes informativos durante el arranque del kernel

  Nota:

   Existen otras opciones de arranque, por favor vea la pagina de ayuda
   boot(8) para mas informacion al respecto.

12.5. Device Hints

   Escrito por Tom Rhodes.

   Pendiente de Traduccion

12.6. Init: inicializacion del proceso de control

   Ya que el kernel ha finalizado de arrancar, pasara el control a un proceso
   de usuario llamado init, el cual se localiza en /sbin/init, o bien en la
   ruta especificada por la variable de entorno init_path del cargador.

  12.6.1. Secuencia automatica de reinicio

   La secuencia automatica de reinicio se asegura de que los sistemas de
   ficheros disponibles en el sistema sean consistentes. Si no lo son, y el
   programa fsck no puede arreglar estas inconsistencias, init envia el
   sistema a modo monousuario, de tal forma que el administrador pueda
   ingresar en el y arreglar los problemas directamente.

  12.6.2. Modo monousuario

   A este modo se puede llegar por medio de la secuencia automatica de
   reinicio, o por medio de la opcion -s en el arranque de usuario o al
   establecer la variable boot_single en el cargador.

   Tambien desde el modo multi-usuario se puede acceder, al utilizar shutdown
   sin la opcion de reinicio (-r) o la de apagado (-h) del sistema.

   Si la consola del sistema esta configurada de modo inseguro en el fichero
   /etc/ttys, entonces el sistema solicitara la contrasena del superusuario
   (root), antes de ingresar al sistema en modo mono-usuario.

   Ejemplo 12.3. Una consola insegura en /etc/ttys

 # name  getty                           type    status          comments
 #
 # If console is marked "insecure", then init will ask for the root password
 # when going to single-user mode.
 console none                            unknown off insecure

  Nota:

   Una consola insegura significa que usted considera como insegura
   fisicamente su consola, por lo que desea asegurarse de que solo quien
   conoce la contrasena del superusuario puede ingresar al sistema en modo
   mono-usuario, y no que desea ejecutar la consola inseguramente. Esto es,
   si desea contar con seguridad escoja la opcion insecure, y no secure.

  12.6.3. Modo multiusuario

   En el caso de que init encuentre en buen estado al sistema de ficheros, o
   una vez que el usuario ha terminado del modo mono-usuario, el sistema
   entrara al modo multi-usuario, en donde comienzan los ficheros de
   configuracion-fuente del sistema.

    12.6.3.1. Configuracion-Fuente(rc)

   La configuracion fuente lee la configuracion por default del fichero
   /etc/defaults/rc.conf, y detalles especificos del sistema desde el fichero
   /etc/rc.conf, y posteriormente procede a montar los sistemas de ficheros
   del sistema, descritos en /etc/fstab, iniciar servicios de red, asi como
   varios demonios del sistema, para finalmente ejecutar los escritos
   (scripts) de configuracion instalados por paquetes, localmente.

   La pagina de ayuda rc(8) es una buena referencia para conocer mas de este
   tipo de ficheros, asi como examinar los mismos ficheros.

12.7. Secuencia de apagado

   Una vez que el apagado sea controlado, por medio de shutdown, init
   ejecutara el escrito /etc/rc.shutdown, para posteriormente enviar a todos
   los procesos la senal TERM, y subsecuentemente la senal KILL a cualquiera
   que no haya terminado en tiempo.

Capitulo 13. Usuarios y administracion basica de cuentas

   Contributed by Neil Blakey-Milner.
   Tabla de contenidos

   13.1. Sinopsis

   13.2. Introduccion

   13.3. La cuenta superusuario

   13.4. Cuentas de sistema

   13.5. Cuentas de usuario

   13.6. Modificacion de cuentas

   13.7. Limitar a los usuarios

   13.8. Personalizar a los usuarios

   13.9. Grupos

13.1. Sinopsis

   FreeBSD permite que varios usuarios usen el mismo ordenador. Obviamente,
   solo uno de estos usuarios puede sentarse frente al monitor y al teclado
   en un momento dado [6] , pero cualquier numero de usuarios puede entrar
   por la red para hacer su trabajo. Para usar el sistema cada usuario ha de
   tener una cuenta.

   Despues de leer este capitulo sabras:

     * Cuales son las diferencias entre las distintas cuentas de usuario en
       sistemas FreeBSD.

     * Como anadir cuentas.

     * Como eliminar cuentas.

     * Como cambiar detalles de las cuentas, como el nombre completo del
       usuario, o su shell preferida.

     * Como establecer limites por cuenta, para controlar los recursos como
       memoria o tiempo de CPU que las cuentas y grupos de cuentas pueden
       emplear.

     * Como usar grupos para facilitar la administracion de cuentas.

   Antes de leer este capitulo deberias:

     * Entender los conceptos basicos de Unix y FreeBSD (Capitulo 3,
       Conceptos basicos de Unix).

13.2. Introduccion

   Todos los accesos al sistema se consiguen via cuentas, y todos los
   procesos son ejecutados por usuarios, por ello la administracion de
   usuarios y cuentas es de una gran importancia en sistemas FreeBSD.

   Cada cuenta en un sistema FreeBSD tiene cierta informacion asociada que la
   identifica.

   Nombre de usuario

           El nombre de usuario como se le entraria al prompt login:. Los
           nombres de usuario han de ser unicos en la computadora; no puede
           haber dos usuarios con el mismo nombre de usuario. Existen algunas
           reglas para la creacion de nombres de usuario validos documentadas
           en passwd(5); tipicamente se usarian nombres de usuario de a lo
           sumo ocho caracteres, todos ellos en minuscula.

   Contrasena

           Cada cuenta tiene una contrasena asociada. La contrasena puede ser
           vacia, en cuyo caso no se requerira ninguna para acceder al
           sistema. Esto normalmente es una mala idea; cada cuenta deberia
           tener una constrasena no vacia.

   Identificador de usuario (UID)

           El UID es un numero entre 0 y 65536 que sirve para identificar
           univocamente al usuario en el sistema. Internamente, FreeBSD usa
           el UID para identificar usuarios y cualquier comando de FreeBSD
           que permita especificar un nombre de usuario convertira este al
           UID antes de trabajar con el. Esto significa que puedes tener
           varias cuentas con nombres de usuario distintos pero con el mismo
           UID. En lo que a FreeBSD respecta, tales cuentas son un solo
           usuario. Es improbable que alguna vez tengas que hacer algo asi.

   Identificador de grupo (GID)

           El GID es un numero entre 0 y 65536 que sirve para identificar
           univocamente el grupo principal al cual pertenece un usuario. Los
           grupos son un mecanismo para controlar el acceso a recursos del
           sistema en base al GID, en vez del UID. Esto puede reducir
           significativamente el tamano de algunos ficheros de configuracion.
           Un usuario puede pertencer a mas de un grupo.

   Clase de login

           Las clases de login son una extension al mecanismo de grupos que
           ofrecen una mayor flexibilidad a la hora de adaptar el sistema a
           distintos usuarios.

   Tiempo de cambio de contrasena

           Por defecto FreeBSD no obliga a los usuarios a cambiar su
           contrasena periodicamente. Se puede requerir esto a determinados
           usuarios, haciendo que algunos o todos deban cambiar sus
           contrasenas al cabo de cierto periodo de tiempo.

   Tiempo de expiracion de cuentas

           Por defecto las cuentas en FreeBSD no expiran. Si estas creando
           cuentas que sabes que van a tener un tiempo limitado de vida, por
           ejemplo, las cuentas de los estudiantes de una escuela, entonces
           puedes especificar cuando expiran. Una vez vencido su tiempo de
           expiracion una cuenta no puede ser usada para entrar en el
           sistema, si bien sus directorios y archivos seran conservados.

   Nombre completo de usuario

           El nombre de usuario identifica univocamente a una cuenta para
           FreeBSD, pero no refleja su verdadero nombre necesariamente. Esta
           informacion puede ser asociada a la cuenta.

   Directorio home

           El directorio home es el camino completo de un directorio en el
           sistema en el que el usuario se hallara cuando entre. Una
           convencion usual consiste en poner todos los directorios home en
           /home/nombre_de_usuario o en /usr/home/nombre_de_usuario. Los
           usuarios guardarian sus archivos personales en sus directorios
           home, y en cualquier directorio que creasen alli.

   Shell de usuario

           La shell provee el entorno por defecto mediante el cual los
           usuarios interactuan con el sistema. Existen varios tipos de shell
           y los usuarios experimentados tendran sus propias preferencias,
           que pueden expresarse en la configuracion de su cuenta.

   Existen principalmente tres tipos de cuentas; la cuenta de superusuario,
   las cuentas de usuarios del sistema, y las de usuarios. La cuenta de
   superusuario, normalmente llamada root, se usa para administrar el sistema
   sin limitaciones en los privilegios. Los usuarios del sistema utilizan
   servicios del mismo. Finalmente, las cuentas de usuarios son usadas por
   gente real, aquellos que entran, leen correo, etcetera.

13.3. La cuenta superusuario

   La cuenta superusuario, normalmente llamada root, viene preconfigurada
   para facilitar la administracion del sistema, y no deberia ser utilizada
   para tareas cotidianas como enviar o recibir correo, exploracion general
   del sistema, o programacion.

   Esto es asi porque el superusuario, a diferencia de las cuentas de
   usuario, puede operar sin limites, y un mal uso de la cuenta de
   superusuario puede conllevar desastres espectaculares. Las cuentas de
   usuario no pueden destruir el sistema por un error, por ello es
   generalmente mejor utilizar cuentas de usuario normales cuando sea
   posible, a no ser que especialmente necesites privilegios extra.

   Deberias comprobar siempre un par o tres de veces los comandos que
   ejecutas como superusuario, ya que un espacio de mas o un caracter omitido
   pueden significar una perdida de datos irreparable.

   Asi pues, lo primero que deberias hacer despues de leer este capitulo es
   crear una cuenta sin privilegios de uso general para ti si aun no la
   tienes. Esto aplica tanto si trabajas en una maquina con varios usuarios
   como si trabajas en una maquina con un solo usuario. Mas adelante, en este
   mismo capitulo, explicamos como crear cuentas adicionales, y como cambiar
   de usuario normal a superusuario.

13.4. Cuentas de sistema

   Los usuarios de sistema son aquellos que corren servicios como DNS,
   correo, servidores web, etc. Esto es asi por seguridad; si todos los
   servicios corrieran como superusuario podrian actuar sin ninguna
   restriccion.

   Algunos ejemplos de usuarios de sistema son daemon, operator, bind (para
   el DNS), y news. Con frecuencia, los administradores de sistemas crean el
   usuario httpd para que ejecute los servidores web que instalan.

   nobody es el usuario de sistema sin privelegios generico. No obstante, es
   importante tener en cuenta que cuantos mas servicios use nobody, mas
   ficheros y procesos estaran asociados con dicho usuario, y en consecuencia
   mas privilegiado sera.

13.5. Cuentas de usuario

   Las cuentas de usuario constituyen la principal via de acceso al sistema
   para la gente real. Estas cuentas aislan al usuario del entorno,
   impidiendo que pueda danar al sistema o a otros usuarios, y permitiendo a
   su vez que pueda personalizar su entorno sin que esto afecte a otros.

   Cada persona que acceda a tu sistema deberia tener una sola cuenta de
   usuario. Esto te permite averiguar quien esta haciendo que, evita que
   interfieran las configuraciones de distintos usuarios, que unos puedan
   leer el correo de otros, etcetera.

   Cada usuario puede configurar su entorno para acomodarlo al uso que hace
   del sistema, utilizando shells, editores, atajos de teclado e idioma
   alternativos.

13.6. Modificacion de cuentas

   Existe una variedad de comandos disponible en el entorno Unix para
   modificar cuentas de usuario. Los comandos mas comunes se hallan resumidos
   a continuacion, seguidos de ejemplos mas detallados de su uso.

   +------------------------------------------------------------------------+
   | Comando |                           Resumen                            |
   |---------+--------------------------------------------------------------|
   | adduser | La aplicacion de linea de comandos recomendada para anadir   |
   |         | nuevos usuarios.                                             |
   |---------+--------------------------------------------------------------|
   | rmuser  | La aplicacion de linea de comandos recomendada para eliminar |
   |         | usuarios.                                                    |
   |---------+--------------------------------------------------------------|
   | chpass  | Una herramienta flexible para modificar la base de datos de  |
   |         | usuarios.                                                    |
   |---------+--------------------------------------------------------------|
   | passwd  | Una herramienta de linea de comandos simple para cambiar     |
   |         | contrasenas de usuario.                                      |
   |---------+--------------------------------------------------------------|
   | pw      | Una herramienta potente y flexible para modificar cualquier  |
   |         | aspecto de las cuentas de usuario.                           |
   +------------------------------------------------------------------------+

  13.6.1. adduser

   adduser es un programa simple para anadir usuarios. Crea entradas en los
   archivos de sistema passwd y group. Tambien crea un directorio home para
   el nuevo usuario, copia alli ficheros de configuracion por defecto
   ("dotfiles") de /usr/share/skel, y opcionalmente puede enviar al usuario
   un mensaje de bienvenida.

   Para crear el fichero inicial de configuracion usa adduser -s
   -config_create. [7] A continuacion configuramos valores por defecto para
   adduser y creamos nuestra primera cuenta de usuario, dado que utilizar
   root para uso normal del sistema es pernicioso y peligroso.

   Ejemplo 13.1. Configuracion de adduser

 # adduser -v
 Use option ``-silent'' if you don't want to see all warnings and questions.
 Check /etc/shells
 Check /etc/master.passwd
 Check /etc/group
 Enter your default shell: csh date no sh tcsh zsh [sh]: zsh
 Your default shell is: zsh -> /usr/local/bin/zsh
 Enter your default HOME partition: [/home]:
 Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:
 Send message from file: /etc/adduser.message no
 [/etc/adduser.message]: no
 Do not send message
 Use passwords (y/n) [y]: y

 Write your changes to /etc/adduser.conf? (y/n) [n]: y

 Ok, let's go.
 Don't worry about mistakes. I will give you the chance later to correct any input.
 Enter username [a-z0-9_-]: jru
 Enter full name []: J. Random User
 Enter shell csh date no sh tcsh zsh [zsh]:
 Enter home directory (full path) [/home/jru]:
 Uid [1001]:
 Enter login class: default []:
 Login group jru [jru]:
 Login group is ``jru''. Invite jru into other groups: guest no
 [no]: wheel
 Enter password []:
 Enter password again []:

 Name:     jru
 Password: ****
 Fullname: J. Random User
 Uid:      1001
 Gid:      1001 (jru)
 Class:
 Groups:   jru wheel
 HOME:     /home/jru
 Shell:    /usr/local/bin/zsh
 OK? (y/n) [y]: y
 Added user ``jru''
 Copy files from /usr/share/skel to /home/jru
 Add another user? (y/n) [y]: n
 Goodbye!
 #

   En resumen, cambiamos la shell por defecto a zsh (una shell alternativa
   incluida en la coleccion de ports), y deshabilitamos el envio de un
   mensaje de bienvenida a nuevos usuarios. Luego grabamos la configuracion,
   creamos una cuenta para jru, y nos aseguramos de que jru este en el grupo
   wheel (de modo que puede asumir el papel de root via el comando su).

  Nota:

   La contrasena que escribes no se muestra, tampoco se muestran asteriscos.
   Asegurate de no entrar dos veces una contrasena equivocada.

  Nota:

   Usa adduser sin argumentos en adelante, no necesitaras cambiar las
   opciones por defecto. Si el programa te pide modificarlas sal y prueba con
   la opcion -s.

  13.6.2. rmuser

   Puedes usar rmuser para eliminar completamente del sistema a un usuario.
   rmuser efectua los siguientes pasos:

    1. Elimina la entrada del usuario en crontab(1) (si tiene alguna).

    2. Elimina las tareas at(1) pertenecientes al usuario.

    3. Mata todos los procesos pertenecientes al usuario.

    4. Elimina al usuario del fichero local de contrasenas del sistema.

    5. Borra el directorio home del usuario (si le pertenece).

    6. Elimina los archivos de correo entrante del usuario de /var/mail.

    7. Borra todos los ficheros del usuario de areas en las que se guardan
       archivos temporales como /tmp.

    8. Finalmente, elimina el nombre de usuario de todos aquellos grupos a
       los que pertenece en /etc/group.

  Nota:

       Si un grupo queda vacio y el nombre del grupo coincide con el del
       usuario, el grupo es eliminado; esto complementa la creacion de grupos
       por usuario de adduser(8).

   rmuser no puede ser usado para eliminar cuentas de superusuario, dado que
   algo asi es casi siempre senal de masiva destruccion.

   Por defecto existe un modo interactivo que intenta asegurar que uno sabe
   lo que hace.

   Ejemplo 13.2. Eliminacion interactiva de cuenta con rmuser

 # rmuser jru
 Matching password entry:
 jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/tcsh
 Is this the entry you wish to remove? y
 Remove user's home directory (/home/jru)? y
 Updating password file, updating databases, done.
 Updating group file: trusted (removing group jru -- personal group is empty) done.
 Removing user's incoming mail file /var/mail/jru: done.
 Removing files belonging to jru from /tmp: done.
 Removing files belonging to jru from /var/tmp: done.
 Removing files belonging to jru from /var/tmp/vi.recover: done.
 #

  13.6.3. chpass

   chpass cambia informacion de los usuarios en base de datos como
   contrasenas, shells y datos personales.

   Los administradores del sistema, como el superusuario, son los unicos que
   pueden modificar la informacion y contrasenas de otros usuarios con
   chpass.

   Cuando no le pasamos mas opciones, salvo un nombre de usuario opcional,
   chpass muestra un editor con informacion de usuario. Cuando se sale del
   editor la base de datos de usuarios se actualiza con la nueva informacion.

   Ejemplo 13.3. chpass interactivo ejecutado por el superusuario

 #Changing user database information for jru.
 Login: jru
 Password: *
 Uid [#]: 1000
 Gid [# or name]: 1000
 Change [month day year]:

 Expire [month day year]:
 Class:
 Home directory: /home/jru
 Shell: /usr/local/bin/tcsh
 Full Name: J. Random User
 Office Location:
 Office Phone:
 Home Phone:
 Other information:

   Un usuario normal puede modificar un pequeno subconjunto de esta
   informacion, y solo para si mismo.

   Ejemplo 13.4. chpass interactivo ejecutado por un usuario normal

 #Changing user database information for jru.
 Shell: /usr/local/bin/tcsh
 Full Name: J. Random User
 Office Location:
 Office Phone:
 Home Phone:
 Other information:

  Nota:

   chfn y chsh son enlaces a chpass, como tambien lo son ypchpass, ypchfn, e
   ypchsh. El soporte para NIS es automatico, por lo que no es necesario
   especificar el yp antes del comando. Si esto te resulta algo confuso no te
   preocupes, NIS sera tratado en el Capitulo 29, Networking avanzado.

  13.6.4. passwd

   passwd es el comando que se usa normalmente para cambiar tu propia
   contrasena como usuario o, como superusuario, la de otros usuarios.

  Nota:

   Los usuarios han de introducir su contrasena original antes de cambiarla
   para prevenir que gente no autorizada pueda hacerlo cuando no se
   encuentren en la consola.

   Ejemplo 13.5. Cambio de tu contrasena

 % passwd
 Changing local password for jru.
 Old password:
 New password:
 Retype new password:
 passwd: updating the database...
 passwd: done

   Ejemplo 13.6. Cambio de la contrasena de otro usuario como superusuario

 # passwd jru
 Changing local password for jru.
 New password:
 Retype new password:
 passwd: updating the database...
 passwd: done

  Nota:

   Como ocurre con chpass, yppasswd es un enlace a passwd, de manera que NIS
   funciona con ambos comandos.

  13.6.5. pw

   pw(8) es una utilidad de linea de comandos para crear, eliminar,
   modificar, y mostrar usuarios y grupos. Hace de interfaz a los archivos
   del sistema de usuarios y grupos. pw tiene un conjunto de opciones de
   linea de comandos bastante potente que lo hacen adecuado para su uso en
   scripts de shell, aunque los nuevos usuarios puede que lo encuentren algo
   mas complicado que el resto de comandos que presentamos aqui.

13.7. Limitar a los usuarios

   En un sistema multiusuario es probable que no confies en que el sistema no
   vaya a ser danado por ningun usuario.

   Las cuotas de disco permiten al administrador decirle al sistema de
   ficheros que cantidad de espacio de disco puede utilizar un usuario;
   ademas, ofrecen una manera rapida de comprobar el uso de disco de un
   usuario sin tener que calcularlo cada vez. Las cuotas se estudian en el
   capitulo de quotas.

   El resto de limites de recursos incluyen cantidad de CPU, memoria, y otros
   recursos que el usuario puede utilizar.

   Las clases de login se definen en /etc/login.conf. La semantica precisa
   esta fuera del alcance de esta seccion, pero se describe con detalle en la
   pagina de manual login.conf(5). Es suficiente decir que cada usuario es
   asignado a una clase de login (default por defecto), y que cada clase de
   login tiene un conjunto de capacidades asociado. Una capacidad de login es
   un par nombre=valor, donde nombre es un identificador conocido y valor una
   cadena de texto arbitraria que se procesa en funcion del nombre.
   Establecer clases y capacidades de login es bastante sencillo y tambien se
   describe en login.conf(5).

   Los limites de recursos son diferentes de las capacidades de login en dos
   sentidos. En primer lugar, para cada limite existe un limite blando
   (actual) y uno duro. Un limite blando puede ser ajustado por el usuario o
   una aplicacion, pero no puede ser mas alto que el limite duro. Este ultimo
   puede ser disminuido por el usuario pero nunca aumentado. En segundo
   lugar, la mayoria de los limites de recursos aplican a un usuario concreto
   por proceso, no globalmente. Notese, no obstante, que estas diferencias
   vienen impuestas por como se tratan los limites especificamente, no por la
   implementacion del marco de capacidades de login (es decir, en realidad no
   constituyen un caso especial de capacidades de login).

   Sin mas, a continuacion veremos los limites de recursos mas comunmente
   usados (el resto, junto con el resto de capacidades de login, puede
   encontrarse en login.conf(5)).

   coredumpsize

           El tamano de un fichero core generado por un programa esta, por
           razones obvias, subordinado a otros limites sobre uso de disco (p.
           ej., filesize, o cuotas de disco). Aun y asi, se usa
           frecuentemente como un metodo menos severo de controlar consumo de
           espacio de disco, dado que los usuarios no generan ficheros core
           por ellos mismos, y a menudo no los borran, activar este limite
           puede evitar que agoten el espacio de disco de que disponen si
           algun programa grande (p. ej., emacs) deja de funcionar
           abruptamente.

   cputime

           Esta es la maxima cantidad de tiempo de CPU que los procesos de un
           usuario pueden consumir.

  Nota:

           Este es un limite sobre el tiempo de CPU consumido, no el
           porcentaje de uso de CPU que se muestra en algunos campos de
           top(1) y ps(1). Un limite de ese tipo no es posible a dia de hoy,
           y seria bastante inutil: un compilador -probablemente una tarea
           legitima- puede usar practicamente el 100% de la CPU durante algun
           tiempo con facilidad.

   filesize

           Este es el tamano maximo que puede llegar a tener un fichero del
           usuario. A diferencia de las cuotas de disco, este limite se
           especifica para ficheros individuales, no para el conjunto de
           todos los archivos que posee.

   maxproc

           Este es el maximo numero de procesos que un usuario puede ejecutar
           a la vez, incluidos tanto los procesos en primer plano como los
           procesos en segundo plano. Por razones obvias, este limite no
           puede ser mayor que el limite de sistema especificado por
           kern.maxproc sysctl. Observese tambien que si asignamos un valor
           demasiado bajo a este limite podemos mermar la productividad de un
           usuario: frecuentemente es util entrar multiples veces en el
           sistema o ejecutar pipelines. Algunas tareas, como compilar largos
           programas, lanzan multiples procesos (p. ej., make(1), cc(1), y
           demas preprocesadores intermedios).

   memorylocked

           Esta es la maxima cantidad de memoria que un proceso puede haber
           solicitado tener bloqueada en memoria principal (p. ej., ver
           mlock(2)). Algunos programas criticos para el sistema, como
           amd(8), se quedan bloqueados en la memoria principal de manera que
           en caso de ser llevados a swap no contribuyan a la basura del
           sistema si hay algun problema.

   memoryuse

           Esta es la mayor cantidad de memoria que un proceso puede consumir
           en todo momento. Incluye tanto memoria normal como uso de swap. No
           se trata de un limite para restringir el consumo de memoria en
           general, pero es un buen comienzo.

   openfiles

           Esta es la maxima cantidad de archivos que un proceso puede tener
           abiertos. En FreeBSD, los archivos se usan tambien para
           representar sockets y canales IPC; asi, cuida de no poner este
           limite demasiado bajo. A nivel de sistema, el limite para esto lo
           define kern.maxfiles sysctl.

   sbsize

           Este es el limite de cantidad de memoria de red, y por lo tanto
           mbufs, que un usuario puede consumir. Se origino como respuesta a
           un viejo ataque DoS que creaba muchos sockets, pero puede ser
           usado en general para limitar las comunicaciones por red.

   stacksize

           Este es el tamano maximo que puede alcanzar la pila de un proceso.
           Por si solo no es suficiente para limitar la cantidad de memoria
           que puede usar un programa; en consecuencia, deberia ser usado
           junto con otros limites.

   Hay unas pocas cosas mas a recordar cuando establecemos limites de
   recursos. A continuacion vienen algunas recomendaciones, sugerencias, y
   comentarios varios.

     * Los procesos que se ponen en marcha cuando arranca el sistema por
       /etc/rc estan asignados a la clase de login daemon.

     * Aunque el /etc/login.conf que viene con el sistema tiene valores
       razonables para la mayoria de los limites, solo tu, el administrador,
       puedes saber lo que es apropiado para tu sistema.

     * A los usuarios del X Window System (X11) probablemente se les deberia
       conceder mas recursos que al resto. X11 de por si consume muchos
       recursos, pero ademas contribuye a que los usuarios ejecuten mas
       programas simultaneamente.

     * Recuerda que hay muchos limites que aplican a procesos individuales,
       no al usuario en general. Por ejemplo, poner openfiles a 50 significa
       que cada uno de los procesos que ejecute un usuario puede abrir a lo
       maximo 50 ficheros. Asi, la cantidad de ficheros que un usuario puede
       abrir es el valor de openfiles multiplicado por el valor de maxproc.
       Esto tambien aplica al uso de memoria.

   Para mas informacion acerca de limites de recursos y clases y capacidades
   de login en general, consulta las paginas de manual relevantes:
   cap_mkdb(1), getrlimit(2), login.conf(5).

13.8. Personalizar a los usuarios

   La localizacion es un entorno establecido por el administrador o el
   usuario para dar soporte a distintos lenguajes, juegos de caracteres,
   estandares sobre fechas y horas, etcetera. Este tema se trata en el
   capitulo Localizacion.

13.9. Grupos

   Un grupo es simplemente una lista de usuarios. Los grupos se identifican
   por su nombre de grupo y gid (ID de grupo). En FreeBSD (y en la mayoria de
   sistemas Unix), los dos factores que tiene en cuenta el nucleo para
   decidir si un proceso puede hacer algo es su ID de usuario y la lista de
   grupos a los que pertenece. A diferencia del ID de usuario, un proceso
   tiene una lista de grupos asociados. En ocasiones encontraras menciones al
   "ID de grupo" de un usuario o de un proceso; la mayoria de las veces
   referiran simplemente al primero de los grupos de la lista.

   La correspondencia entre nombres e IDs de grupo esta en /etc/group. Se
   trata de un fichero de texto plano con cuatro campos separados por el
   signo dos puntos. El primer campo es el nombre de grupo, el segundo la
   contrasena encriptada, el tercero el ID de grupo, y el cuarto la lista de
   miembros separados por comas. Puede ser editado a mano sin peligro
   (!suponiendo, por supuesto, que no se cometan errores de sintaxis!). Para
   una descripcion mas completa de la sintaxis, ver la pagina de manual
   group(5).

   Si no quieres editar /etc/group manualmente, puedes usar el comando pw(8)
   para anadir y modificar grupos. Por ejemplo, para anadir un grupo llamado
   teamtwo y luego confirmar que existe puedes usar:

   Ejemplo 13.7. Anadir un grupo usando pw(8)

 # pw groupadd teamtwo
 # pw groupshow teamtwo
 teamtwo:*:1100:

   El numero 1100 en el ejemplo anterior es el ID de grupo del grupo teamtwo.
   Ahora mismo teamtwo no tiene miembros, y es por tanto bastante inutil.
   Cambiemos eso invitando a jru a formar parte del grupo teamtwo.

   Ejemplo 13.8. Anadir a alguien a un grupo usando pw(8)

 # pw groupmod teamtwo -M jru
 # pw groupshow teamtwo
 teamtwo:*:1100:jru

   El argumento de la opcion -M es una lista con los usuarios que son
   miembros del grupo separados por comas. Sabemos de secciones anteriores
   que el fichero de contrasenas tambien contiene un grupo para cada usuario.
   El usuario es automaticamente anadido a la lista de grupos por el sistema;
   no constara como miembro cuando usemos el comando groupshow con pw(8),
   pero si cuando la informacion se consulte con id(1) u otra herramienta
   similar. En otras palabras, pw(8) solo manipula el fichero /etc/group;
   nunca tratara de leer datos adicionales de /etc/passwd.

   Ejemplo 13.9. Determinar pertenencia a grupos con id(1)

 % id jru
 uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)

   Como puedes ver, jru es miembro de los grupos jru y teamtwo.

   Para mas informacion acerca de pw(8), consulta su pagina de manual, y para
   mas informacion acerca del formato de /etc/group, consulta la pagina de
   manual de group(5).

     ----------------------------------------------------------------------

   [6] Bueno, a menos que conectes multiples terminales, pero dejaremos ese
   tema para el Capitulo 24, Comunicaciones serie.

   [7] La -s hace que adduser sea silencioso por defecto. Mas tarde usamos -v
   cuando queremos cambiar valores por defecto.

Capitulo 14. Seguridad

   Gran parte del contenido de este capitulo procede de la pagina de manual
   de security(7), de Matthew Dillon.
   Tabla de contenidos

   14.1. Sinopsis

   14.2. Introduccion

   14.3. Asegurar FreeBSD

   14.4. DES, MD5 y Crypt

   14.5. Contrasenas de un solo uso

   14.6. TCP Wrappers

   14.7. KerberosIV

   14.8. Kerberos5

   14.9. OpenSSL

   14.10. VPN sobre IPsec

   14.11. OpenSSH

   14.12. Listas de control de acceso a sistemas de ficheros

   14.13. Monitorizacion de fallos de seguridad de aplicaciones

   14.14. FreeBSD Security Advisories

   14.15. Contabilidad de procesos

14.1. Sinopsis

   Este capitulo contiene una introduccion basica a los conceptos de
   seguridad del sistema, unas cuantas normas basicas de uso y algunos
   avanzados del tema en FreeBSD. Muchos de los temas expuestos se aplican a
   la seguridad del sistema y de Internet en general. Internet ya no es aquel
   lugar "amistoso" en el que todo el mundo se comportaba como un buen
   ciudadano. Si quiere proteger sus datos, su propiedad intelectual, su
   tiempo y muchas mas cosas de manos malintencionadas debe hacer que su
   sistema sea seguro.

   FreeBSD proporciona un variado arsenal de utilidades y mecanismos para
   asegurar la integridad y la seguridad de su sistema y red.

   Despues de leer este capitulo:

     * conocera conceptos basicos de la seguridad relacionados con FreeBSD.

     * Tendra informacion sobre los diversos mecanismos de cifrado
       disponibles en FreeBSD, entre los cuales estan DES y MD5.

     * Sabra como configurar la autentificacion de contrasenas de un solo
       uso.

     * Sabra como configurar TCP Wrappers y usarlos con inetd.

     * Sabra como instalar KerberosIV en versiones de FreeBSD anteriores a
       5.0.

     * Sabra como instalar Kerberos5 en versiones de FreeBSD posteriores a
       5.0.

     * Podra configurar IPsec y crear una VPN entre maquinas
       FreeBSD/Windows(R).

     * Sabra como configurar y utilizar OpenSSH, la implementacion de SSH en
       FreeBSD.

     * Sabra en que consisten las ACL del sistema de ficheros y como
       utilizarlas.

     * Sabra como usar Portaudit, con la que podra auditar el software que
       instale desde la desde la coleccion de ports.

     * Sabra como sacar partido de los avisos de seguridad que publica
       FreeBSD.

     * Podra hacerse una idea clara de en que consiste la contabilidad de
       procesos y de como activarla en FreeBSD.

   Antes de leer este capitulo:

     * Comprender conceptos basicos de FreeBSD e Internet.

   En otras secciones de este manual se cubren aspectos adicionales sobre
   seguridad. Por ejemplo, MAC (controles de acceso obligatorio) se explica
   en el Capitulo 16, Mandatory Access Control y los cortafuegos en el
   Capitulo 26, Cortafuegos.

14.2. Introduccion

   La seguridad es un trabajo que que comienza y termina en el administrador
   de sistema. Aunque que los sistemas multiusuario BSD UNIX(R) posean una
   seguridad inherente, el trabajo de construir y mantener mecanismos de
   seguridad adicionales para que los usuarios sean aun mas "honestos" es
   probablemente una de las mayores tareas de la administracion de sistemas.
   Los sistemas son tan seguros como uno los haga, y no hay que olvidar que
   los problemas de seguridad compiten con la comodidad a la que tendemos los
   humanos. Los sistemas UNIX(R) son capaces de ejecutar una gran cantidad de
   procesos simultaneamente, muchos de los cuales son servidores, lo que
   significa que las entidades externas pueden conectarse y "hablar" con
   ellos. Del mismo modo que las minicomputadoras de ayer se convirtieron en
   los sistemas de escritorio de hoy en dia, la seguridad se va convirtiendo
   en un problemas mas y mas acuciante.

   La seguridad bien entendida se implementa en capas, a la manera de una
   "cebolla". Basicamente lo que se hace es crear la mayor cantidad posible
   de capas de seguridad, para mas tarde monitorizar el sistema en busca de
   intrusos. No es conveniente exagerar la seguridad, ya que interferiria con
   la deteccion, y la deteccion es uno de los aspectos mas importantes de
   cualquier mecanismo de seguridad. Por ejemplo, no tiene mucho sentido
   activar la bandera schg (consulte chflags(1)) en cada binario del sistema,
   ya que aunque protegeria en cierto modo los binarios, haria que cualquier
   cambio que pudiera realizar un atacante una vez dentro del sistema fuera
   mas dificil de detectar o incluso hacerlo del todo imposible.

   La seguridad del sistema depende tambien de estar preparados para
   distintos tipos de ataque, incluyendo intentos de "tirar" la maquina o
   dejarla en un estado inutilizable, pero que no impliquen intentos de
   comprometer el usuario root Los problemas de seguridad pueden dividirse en
   diferentes categorias:

    1. Ataques de denegacion de servicio (DoS).

    2. Comprometer cuentas de usuarios.

    3. Comprometer root a traves de servidores accesibles.

    4. Comprometer root desde cuentas de usuario.

    5. Creacion de puertas traseras ("Backdoors").

   Un ataque de denegacion de servicio es una accion que priva al sistema de
   los recursos requeridos para su funcionamiento normal. Generalmente, los
   ataques DoS son mecanismos de fuerza bruta que intentan "tumbar" el
   sistema o hacerlo inutilizable sobrecargando la capacidad de sus
   servidores o de la pila de red. Algunos ataques DoS intentan aprovechar
   errores en la pila de red para "tumbar" el sistema con un solo paquete.
   Estos ultimos unicamente pueden solucionarse aplicando al kernel una
   actualizacion que subsane el error. Los ataques a servidores muchas veces
   pueden solucionarse configurando las opciones apropiadas para limitar la
   carga del sistema en condiciones adversas. Los ataques de fuerza bruta a
   redes son mas complicados. Los ataques con paquetes enmascarados, por
   ejemplo, son casi imposibles de detener, a menos que desconecte el sistema
   de Internet. Puede ser que no "tiren" el sistema, pero saturaran la
   conexion a Internet.

   Comprometer una cuenta de usuario es mucho mas comun que un ataque DoS.
   Muchos administradores de sistemas todavia ejecutan servidores estandar
   telnetd, rlogind, rshd y ftpd en sus maquinas. Estos servidores, por
   defecto no operan a traves de conexiones cifradas. El resultado es que se
   si se tiene una base de usuarios de tamano medio, tarde o temprando la
   contrasena de uno (o mas) de sus usuarios sera descubierta durante sus
   accesos al sistema desde ubicaciones remotas.(que es, por otra parte, la
   forma mas comun y mas comoda de acceder a un sistema). El administrador de
   sistemas atento analizara sus logs de acceso remoto en busca de
   direcciones origen spspechosas, incluso entre los accesos al sistema.

   Se debe asumir siempre que, una vez que el atacante tiene acceso a una
   cuenta de usuario, el atacante puede comprometer la cuenta root. En
   realidad en un sistema bien mantenido y asegurado el acceso a una cuenta
   de usuario no necesariamente da al atacante acceso a root. Esta precision
   es importante porque sin acceso a root el atacante dificilmente podra
   esconder sus huellas; podra, como mucho, hacer poco mas que sembrar el
   caos en los ficheros del usuario o "tirar" la maquina. Comprometer cuentas
   de usuario es muy comun porque los usuarios tienden a no tomar las
   precauciones que toma el administrador.

   Los administradores de sistemas deben tener presente que existen muchas
   formas potenciales de comprometer la cuenta root de una maquina. El
   atacante puede conocer la contrasena de root, el atacante puede encontrar
   un error en un servidor que se ejecuta como root y ser capaz de
   comprometer root a traves de una conexion de red a ese servidor; puede ser
   que el atacante sepa de la existencia de un error en un programa suid-root
   que le permita comprometer root una vez dentro de una cuenta de usuario.
   Si un atacante encuentra la manera de comprometer la cuenta root de una
   maquina puede que no necesite instalar una puerta trasera. Muchos de los
   agujeros root encontrados y cerrados hasta la fecha implican una cantidad
   considerable de trabajo para el atacante limpiando todo despues del
   ataque, asi que la mayoria de los atacantes instalan puertas traseras. Una
   puerta trasera facilita al atacante una forma sencilla de recuperar el
   acceso de root al sistema, pero tambien proporciona al administrador de
   sistemas inteligente una forma de detectar la intrusion. Si hace imposible
   a un atacante la instalacion de una puerta trasera puede estar actuando en
   detrimento de su seguridad, porque no cerrara el agujero que el atacante
   encontro para accder al sistema la primera vez que lo hizo.

   Las medidas de seguridad se implementan en un modelo multicapa (tipo
   "cebolla"), que puede categorizarse del siguiente modo:

    1. Asegurar root y cuentas administrativas.

    2. Asegurar los servidores que se ejecuten como root los binarios
       suid/sgid.

    3. Asegurar cuentas de usuario.

    4. Asegurar el fichero de contrasenas.

    5. Asegurar el nucleo del kernel, los dispositivos en bruto y el sistema
       de ficheros.

    6. Deteccion rapida de cambios hechos al sistema.

    7. Paranoia.

   La siguiente seccion de este capitulo tratara los puntos de arriba con
   mayor profundidad.

14.3. Asegurar FreeBSD

  Orden vs. protocolo:

   En este capitulo usaremos el texto en negrita para referirnos a una orden
   o aplicacion, y una fuente en cursiva para referirnos a ordenes
   especificas. Usaremos un tipo normal para los protocolos. Esta diferencia
   tipografica nos sera util por ejemplo con ssh, que es tanto un protocolo
   como una orden.

   Las siguientes secciones cubren los metodos a seguir para asegurar su
   sistema FreeBSD que se mencionados en la seccion anterior de este
   capitulo.

  14.3.1. Asegurar la cuenta root y las cuentas administrativas

   En primer lugar, no se moleste en asegurar las cuentas administrativas (o
   "staff") si no ha asegurado la cuenta root. La mayoria de los sistemas
   tienen una contrasena asignada para la cuenta root. Lo primero que se hace
   es asumir que la contrasena esta siempre amenazada. Esto no significa que
   deba eliminar la contrasena. La contrasena es casi siempre necesaria para
   el acceso por consola a la maquina; significa que no se debe permitir el
   uso de la contrasena fuera de la consola o, mejor aun, mediante su(1). Por
   ejemplo, asegurese de que sus ptys aparezcan como inseguras en el fichero
   /etc/ttys, con lo que hara que los accesos como root via telnet o rlogin
   no sean posibles. Si utiliza otros tipos de login como sshd asegurese de
   que los accesos al sistema como root esten tambien deshabilitados. Para
   ello edite su /etc/ssh/sshd_config y asegurese de que PermitRootLogin este
   puesto a NO. Estudie cada metodo de acceso: hay servicios como FTP que
   frecuentemente son origen de grietas en la estructura del sistema. El
   acceso directo como usuario root solamente debe permitirse a traves de la
   consola.

   Es evidente que, como administrador del sistema, debe usted tener la
   posibilidad de acceder a root, asi que tendra que abrir algunos agujeros,
   pero debe asegurarse de que estos agujeros necesiten contrasenas
   adicionales para verificar su correcto uso. Puede hacer que root sea
   accesible anadiendo cuentas administrativas al grupo wheel (en
   /etc/group). El personal que administra los sistemas que aparezcan en el
   grupo en el grupo wheel pueden hacer su a root. Nunca debe de proporcionar
   al personal administrativo el acceso nativo a wheel poniendolos en el
   grupo wheel en su entrada de contrasena. Las cuentas administrativas deben
   colocarse en un grupo staff, y agregarse despues al grupo wheel en
   /etc/group. Solo aquellos administradores que realmente necesiten acceder
   a root deben pertenecer al grupo wheel. Tambien es posible, mediante un
   metodo de autentificacion como Kerberos, usar el fichero .k5login en la
   cuenta root para permitir un ksu(1) a root sin tener que colocar a nadie
   en el grupo wheel. Puede ser una mejor solucion, ya que el mecanismo wheel
   aun permite a un atacante comprometer root si el intruso ha conseguido el
   fichero de contrasenas y puede comprometer una cuenta de administracion.
   Recurrir al mecanismo wheel es mejor que no tener nada, pero no es
   necesariamente la opcion mas segura.

   Una manera indirecta de asegurar las cuentas de staff y el acceso a root
   es utilizar un metodo de acceso alternativo: es lo que se conoce como
   "estrellar" las contrasenas cifradas de las cuentas administrativas. Use
   vipw(8) para reemplazar cada contrasena cifrada por un solo caracter
   asterisco ("*"). Esto actualizara /etc/master.passwd y la base de datos de
   usuario/contrasena y deshabilitara los accesos al sistema validados
   mediante contrasenas.

   Veamos una cuenta administrativa tipica:

 foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh

   y como deberia quedar:

 foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh

   Este cambio evitara que se efectuen logins normales, ya que la contrasena
   cifrada nunca se correspondera con "*". Hecho esto, el personal de
   administracion tendra que usar otro mecanismo de validacion como
   kerberos(1) o ssh(1) que use un par de llave publica/privada. Si decide
   usar algo como Kerberos tendra que asegurar la maquina que ejecuta los
   servidores Kerberos y su estacion de trabajo. Si usa un par de llave
   publica/privada con ssh, debe asegurar la maquina desde desde la que se
   hace el login (normalmente nuestra estacion de trabajo). Puede anadir una
   capa adicional de proteccion al par de llaves protegiendolas con
   contrasena al crearlo con ssh-keygen(1). El "estrellado" de las
   contrasenas administrativas tambien garantiza que dicho personal solo
   pueda entrar a traves de metodos de acceso que haya usted configurado. Asi
   obligara al personal administrativo a usar conexiones seguras, cifradas,
   en todas sus sesiones, lo que cierra un importante agujero de seguridad al
   que recurren muchos intrusos: usar un sniffer (olfateador) de red desde
   una maquina que le permita hacer tal cosa.

   Los mecanismos de seguridad mas indirectos tambien asumen que esta
   validando su identidad desde un servidor mas restrictivo un servidor menos
   restrictivo. Por ejemplo, si su maquina principal ejecuta toda clase de
   servidores su estacion de trabajo no debe ejecutar ninguno. Para que su
   estacion de trabajo sea razonablemente segura debe ejecutar los minimos
   servidores posibles, si es posible ninguno, y debe usar un salvapantallas
   protegido por contrasena. Es evidente que un atancante con acceso fisico
   al sistema puede romper cualquier barrera de seguridad que se disponga. Es
   un problema a tener en cuenta, pero la mayoria de las intrusiones tienen
   lugar de forma remota, a traves de la red, por parte de gente que no tiene
   acceso fisico a su estacion de trabajo ni a sus servidores.

   Usar Kerberos le ofrece tambien el poder de deshabilitar o cambiar la
   contrasena para una cuenta administrativa en un lugar, y que tenga un
   efecto inmediato en todas las maquinas en las cuales ese administrador
   pueda tener una cuenta. Si una de esas cuentas se ve comprometida la
   posibilidad para cambiar instantaneamente su contrasena en todas las
   maquinas no debe ser desestimada. Con contrasenas distintas, el cambio de
   una contrasena en N maquinas puede ser un problema. Tambien puede imponer
   restricciones de re-contrasenas con Kerberos: no solo se puede hacer un
   ticket de Kerberos que expire despues de un tiempo, sino que el sistema
   Kerberos puede requerir al usuario que escoja una nueva contrasena despues
   de cierto tiempo (digamos una vez al mes).

  14.3.2. Asegurar servidores que se ejecutan como root y binarios SUID/SGID

   Un administrador de sistemas prudente solo ejecutara los servidores que
   necesita, ni uno mas ni uno menos. Dese cuenta de que los servidores
   ajenos son los mas propensos a contener errores. Por ejemplo, ejecutando
   una version desfasada de imapd o popper es como dar una entrada universal
   de root al mundo entero. Nunca ejecute un servidor que no haya revisado
   cuidadosamente. Muchos servidores no necesitan ejecutarse como root. Por
   ejemplo, los daemons ntalk, comsat y finger pueden ejecutarse en una caja
   de arena (sandbox) especial de usuario. Una caja de arena no es perfecta,
   a menos que pase por muchos problemas, pero la aproximacion de cebolla a
   la seguridad prevalece aun y todo: Si alguien es capaz de penetrar a
   traves de un servidor ejecutandose en una caja de arena, todavia tendra
   que salir de la caja de arena. Cuantas mas capas tenga que romper el
   atacante menor sera la posibilidad de exito que tenga. Se han encontrado
   vias de entrada a root en virtualmente todos los servidores que se haya
   ejecutado como root, incluyendo servidores basicos del sistema. Si esta
   tiene una maquina a traves de la cual la gente solo entra por sshd, y
   nunca entra por telnetd, rshd, o rlogind apague esos servicios.

   FreeBSD ejecuta por defecto ntalkd, comsat y finger en una caja de arena.
   Otro programa que puede ser candidato para ejecutarse en una caja de arena
   es named(8). /etc/defaults/rc.conf contiene las directrices necesarias
   (con comentarios) para usar named en una caja de arena. Dependiendo de si
   esta instalando un nuevo sistema o actualizando un sistema ya existente,
   las cuentas especiales de usuario que usan estas cajas de arena puede que
   no esten instaladas. El administrador de sistemas prudente debe investigar
   e implementar cajas de arena para servidores siempre que sea posible.

   Existen numerosos servidores que no se suelen ejecutar en cajas de arena:
   sendmail, imapd, ftpd, y otros. Existen alternativas para algunos de
   ellos, pero instalarlas puede requerir mas trabajo del que tal vez este
   dispuesto a realizar (el factor comodidad ataca de nuevo). Tal vez tenga
   que ejecutar estos servidores como root y depender de otros mecanismos
   para detectar intrusiones que puedan tener lugar a traves de ellos.

   Los otros grandes agujeros potenciales de root que encontramos en un
   sistema son los binarios suid-root y sgid. La mayoria de estos binarios,
   como rlogin, estan en /bin, /sbin, /usr/bin o /usr/sbin. Aunque no hay
   nada absolutamente seguro los binarios suid y sgid del sistema por defecto
   pueden considerarse razonablemente seguros. Aun asi, de vez en cuando
   aparecen agujeros root en estos binarios. En 1998 se encontro un agujero
   root en Xlib, que hacia a xterm (que suele ser suid) vulnerable. Es mejor
   prevenir que curar, y el administrador de sistemas prudente restringira
   los binarios suid, que solo el personal de administracion debe ejecutar, a
   un grupo especial al que solo dicho personal pueda acceder, y deshacerse
   de cualquier binario suid (chmod 000) que no se use. Un servidor sin
   pantalla generalmente no necesita un binario xterm. Los binarios sgid
   pueden ser igual de peligrosos. Si un intruso logra comprometer un binario
   sgid-kmem, el intruso podria leer /dev/kmem y llegar a leer el fichero
   cifrado de contrasenas, poniendo en compromiso potencial cualquier cuenta
   con contrasena. Por otra parte, un intruso que comprometa el grupo kmem
   puede monitorizar las pulsaciones de teclado que se envien a traves de
   ptys, incluyendo las ptys a las que acceden usuarios que emplean metodos
   seguros. Un intruso que comprometa el grupo tty puede escribir en la pty
   de casi cualquier usuario. Si un usuario ejecuta un programa de terminal o
   un emulador capaz de simular un teclado, el intruso podria generar un
   flujo de datos que provoque que la terminal del usuario muestre una orden
   en pantalla, orden que el usuario ejecutara.

  14.3.3. Asegurar las cuentas de usuario

   Las cuentas de usuario suelen ser las mas dificiles de asegurar. Aunque
   puede imponer restricciones de acceso draconianas a su personal
   administrativo y "estrellar" sus contrasenas, tal vez no pueda hacerlo con
   todas las cuentas de todos sus usuarios. Si mantiene el control en un
   grado suficiente quizas lo logre y sea capaz de hacer que las cuentas de
   sus usuarios sean seguras. Si no, tendra que ser mas cuidadoso (aun) en la
   monitorizacion de esas cuentas. Usar ssh y Kerberos en cuentas de usuario
   da mas problemas debido al soporte tecnico y administrativo que requerira,
   pero sigue siendo mejor solucion que un fichero de contrasenas cifradas.

  14.3.4. Asegurar el fichero de contrasenas

   La unica manera segura es ponerle * a tantas contrasenas como sea posible
   y utilizar ssh o Kerberos para acceder a esas cuentas. Aunque el fichero
   cifrado de contrasenas (/etc/spwd.db) solo puede ser legible para root,
   puede que un intruso consiga acceso de lectura a ese fichero, incluso sin
   haber alcanzado el acceso de escritura como root.

   Sus "scripts" de seguridad deben buscar siempre cambios en el fichero de
   contrasenas (consulte Revision de integridad de ficheros mas abajo) e
   informar de ellos.

  14.3.5. Asegurar el Kernel, dispositivos en bruto y el sistema sistema de
  ficheros

   Si un atacante compromete root puede hacer cualquier cosa, pero hay
   ciertas cosas que puede usted preparar para "curarse en salud". Por
   ejemplo, la mayoria de los kernel modernos tienen un dispositivo de los
   Kernels modernos tienen un integrado un dispositivo de paquetes. En
   FreeBSD se llama bpf. Un intruso tipico tratara de ejecutar un "sniffer"
   de paquetes en una maquina comprometida. No deberia darle a ese intruso
   tal recurso, y la mayoria de los sistemas no necesitan el dispositivo bpf.

   Pero si desactiva el dispositivo bpf todavia tendra que preocuparse por
   /dev/mem y /dev/kmem. Desde ellos el intruso podria en dispositivos de
   disco en bruto. Tambien hay que tener muy en cuenta una opcion del kernel
   llamada cargador de modulos, kldload(8). Un intruso con iniciativa puede
   usar un modulo KLD para instalar su propio dispositivo bpf, u otro
   dispositivo que le permita el "sniffing" en un kernel en ejecucion. Para
   prevenir estos problemas debe ejecutar el kernel en un nivel de seguridad
   mayor, al menos en securelevel 1. Puede configurar el securelevel mediante
   una sysctl en la variable kern.securelevel. Una vez que tiene su
   securelevel a 1, los accesos de escritura a dispositivos en bruto se
   denegaran y se impondran las banderas especiales schg. Tambien debe
   cerciorarse de activar la bandera schg en binarios criticos para el
   arranque, directorios y scripts (dicho de otro modo, todo aquello que se
   ejecuta antes de que se active el securelevel). Puede ser que todo esto
   sea una exageracion, sobre todo teniendo en cuenta que la actualizacion
   del sistema se complica bastante a medida que se incrementa el nivel de
   seguridad. Puede ejecutar el sistema a un nivel de seguridad superior pero
   no activar la bandera schg en cada fichero y directorio del sistema. Otra
   posibilidad es montar / y /usr como solo lectura. Recuerde que siendo
   demasiado draconiano en aquello que busca proteger puede dificultar mucho
   la deteccion de una intrusion.

  14.3.6. Revision de integridad de ficheros: binarios, ficheros de
  configuracion, etc.

   Cuando se piensa de proteccon, solo se puede proteger la configuracion
   central del sistema y los ficheros de control hasta el momento en el que
   el factor comodidad salta a la palestra. Por ejemplo, si usa chflags para
   activar el bit schg en la mayoria de los ficheros de / y /usr
   probablemente sea contraproducente; puede proteger los ficheros
   haciendolo, pero tambien cierra una via de deteccion. La ultima capa de su
   modelo de seguridad tipo cebolla es quizas la mas importante: la
   deteccion. El resto de su estructura de seguridad sera inutil (o peor aun,
   le proporcionara un sentimiento de seguridad totalmente infundado) si no
   puede detectar posibles intrusiones. La mitad del trabajo de la cebolla es
   alentar al atacante, en lugar de detenerlo, para darle a la parte de la
   ecuacion de deteccion una oportunidad de atraparlo con las manos en la
   masa.

   La mejor manera de detectar una intrusion es buscar ficheros modificados,
   perdidos, o cuya presencia o estado sea inesperado. La mejor forma de
   buscar ficheros modificados es desde otro sistema (que muchas veces es
   centralizado) con acceso restringido. Escribir sus "scripts" de seguridad
   en un sistema "extraseguro" y con acceso restringido los hace casi
   invisibles a posibles atacantes, y esto es algo muy importante.
   potenciales, y esto es importante. Para poderle sacar el maximo partido
   debe proporcionar a esa maquina con acceso restringido un acceso
   preferente al contenido de las otras maquinas de su entorno; suele hacerse
   mediante la importacion via NFS de solo lectura de las demas maquinas, o
   configurando pares de llaves ssh para acceder a las otras maquinas desde
   la que tiene el acceso restringido. Si exceptuamos el trafico de red, NFS
   es el metodo menos visible y le permite monitorizar los sistemas de
   ficheros de cada maquina cliente de forma practicamente indetectable. Si
   su servidor de acceso restringido esta conectado a las maquinas clientes a
   traves de un concentrador o a traves de varias capas de encaminamiento el
   metodo NFS puede ser muy inseguro, por lo que ssh puede ser la mejor
   opcion, incluso con las huellas de auditoria que ssh va dejando.

   Una vez que le da a una maquina de acceso restringido (al menos) acceso de
   lectura a los sistemas cliente que va a monitorizar, tendra que escribir
   "scripts" para efectuar la monitorizacion. Si va a usar un montaje NFS
   puede escribir "scripts" utilizando simples herramientas del sistema como
   find(1) y md5(1). Es aconsejable ejecutar MD5 fisicamente en los ficheros
   de las maquinas cliente al menos una vez al dia, y comprobar los ficheros
   de control (los que hay en /etc y /usr/local/etc) con una frecuencia
   incluso mayor. Si aparecen discrepancias al compararlos con la informacion
   basada en MD5 que la maquina de acceso restringido usa como base debe
   hacer una comprobacion inmediata y profunda. Un buen "script" tambien debe
   buscar binarios que sean suid sin razon aparente, y ficheros nuevos o
   borrados en particiones del sistema como / y /usr.

   Si usa ssh en lugar de NFS sera mucho mas complicado escribir el "script"
   de seguridad. En esencia, tiene que pasar por scp los "scripts" a la
   maquina cliente para poder ejecutarlos, haciendolos visibles; por
   seguridad, tambien tendra que pasar via scp los binarios (por ejemplo
   find) que utilizan dichos "scripts". El cliente ssh de la maquina cliente
   puede estar ya bajo el control del intruso. Con todo y con eso, puede ser
   necesario usar ssh si trabaja sobre enlaces inseguros, tambien es mucho
   mas dificil de manejar.

   Un buen "script" de seguridad buscara tambien cambios en la configuracion
   de los ficheros de acceso de usuarios y miembros del personal de
   administracion: .rhosts, .shosts, .ssh/authorized_keys, etc; en resumen,
   ficheros fuera del rango de revision MD5.

   Si tiene que verselas con una cantidad enorme de espacio en disco para
   usuarios le llevara mucho tiempo recorrer cada fichero de cada particion.
   En su caso seria una buena idea configurar mediante opciones de montaje la
   deshabilitacion de binarios y dispositivos suid en esas particiones.
   Revise las opciones nodev y nosuid de mount(8). Deberia comprobarlos de
   todas maneras al menos una vez por semana, ya que el objeto de esta capa
   es detectar intrusiones, efectivas o no.

   La contabilidad de procesos (vea accton(8)) es una opcion con una carga
   relativamente ligera para el sistema operativo, y puede ayudarle como
   mecanismo de evaluacion tras una intrusion. Es especialmente util para
   rastrear como consiguion realmente acceder el intruso al sistema
   (asumiendo que el fichero este intacto despues de la intrusion).

   Los "scripts" de seguridad deben procesar los logs, y los propios logs
   deben generarse de la forma mas segura posible: un syslog remoto puede ser
   muy util. Un intruso trata de cubrir sus huellas, los logs son un recurso
   critico cuando el administrador de sistemas intenta determinar la hora y
   el metodo de la intrusion inicial. La ejecucion de la consola del sistema
   en un puerto serie y recolectar la informacion de forma periodica en una
   maquina segura de monitorizacion de consolas es una forma de cumplir esta
   tarea.

  14.3.7. Paranoia

   Un poco de paranoia nunca esta de mas. Como norma, un administrador de
   sistemas puede anadir cualquier tipo de mecanismo de seguridad siempre y
   cuando no afecte a la comodidad, y puede anadir mecanismos de seguridad
   que si afecten a la comodidad si tiene una buena razon para hacerlo. Mas
   aun, un administrador de seguridad debe mezclar un poco de ambas cosas: si
   sigue al pie de la letra las recomendaciones que se dan en este documento
   tambien esta sirviendo en bandeja de plata al posible atancante su
   metodologia. Ese posible atacante tambien tiene acceso a este documento.

  14.3.8. Ataques de denegacion de servicio

   Esta seccion cubre ataques de denegacion de servicio. Un ataque DoS suele
   consistir en un ataque mediante paquetes. NO hay mucho que pueda hacerse
   contra un ataque mediante paquetes falsificados ("spoofed") que busque
   saturar su red, pero puede limitar el dano asegurandose de que los ataques
   no tiren sus servidores.

    1. Limitacion de forks en el servidor.

    2. Limitacion de ataques "springboard" (ataques de respuesta ICMP, ping
       broadcast, etc.)

    3. Cache de rutas del kernel.

   Un tipico ataque DoS contra un servidor con instancias (forks) seria
   tratar de provocar que el servidor consuma procesos, descriptores de
   fichero y memoria hasta tirar la maquina. inetd (consulte inetd(8))
   dispone de varias opciones para limitar este tipo de ataque. Recuerde que
   aunque es posible evitar que una maquina caiga, generalmente no es posible
   evitar que un servicio sea vea interrumpido a causa el ataque. Consulte la
   pagina de manual de inetd atentamente y sobre todo estudie las las
   opciones -c, -C, y -R. Observe que los ataques con direcciones IP
   falsificadas sortearan la opcion -C de inetd, asi que debe usar una
   combinacion de opciones. Algunos servidores autonomos ("standalone")
   cuentan con parametros de autolimitacion de instancias.

   Sendmail tiene la opcion -OMaxDaemonChildren, que tiende a funcionar mucho
   mejor que las opciones de limite de carga de sendmail debido al retraso
   que provoca la carga. Debe especificar un parametro MaxDaemonChildren al
   inicio de sendmail que sea lo suficientemente alto como para gestionar la
   carga esperada, pero no tan alto que la computadora no pueda absorber tal
   numero de sendmails sin caerse de boca. Tambien es prudente ejecutar
   sendmail en modo de cola (-ODeliveryMode=queued) y ejecutar el daemon
   (sendmail -bd) de manera independiente de las ejecuciones de cola
   (sendmail -q15m). Si a pesar de todo necesita entregas en tiempo real
   puede ejecutar la cola a un intervalo menor, como -q1m, pero asegurese de
   especificar una opcion MaxDaemonChildren razonable para ese sendmail y asi
   evitar fallos en cascada.

   Syslogd puede recibir ataques directos y se recomienda encarecidamente que
   utilice la opcion -s siempre que sea posible, y si no la opcion -a.

   Tambien debe ser extremadamente cuidadoso con servicios de conexion
   inversa como el ident inverso de TCP Wrapper, que puede recibir ataques
   directos. No se suele usar el ident inverso de TCP Wrapper por esa misma
   razon.

   Es una muy buena idea proteger los servicios internos de acceso externo
   protegiendolos via con un cortafuegos en los routers de frontera. La idea
   es prevenir ataques de saturacion desde el exterior de la LAN, y no tanto
   para proteger servicios internos de compromisos root basados en red.
   Configure siempre un cortafuegos exclusivo, esto es, "restringir todo
   menos los puertos A, B, C, D y M-Z". De esta manera restringira todos sus
   puertos con numeros bajos excepto ciertos servicios especificos como named
   (si es el servidor primario de una zona), ntalkd, sendmail, y otros
   servicios accesibles desde Internet. Si configura el cortafuegos de la
   otra manera (como un cortafuegos inclusivo o permisivo), tiene grandes
   posibilidades de que olvide "cerrar" un par de servicios, o de que agregue
   un nuevo servicio interno y olvide actualizar el cortafuegos. Puede
   incluso abrir el rango de numeros de puerto altos en el cortafuegos para
   permitir operaciones de tipo permisivo sin comprometer sus puertos bajos.
   Recuerde tambien que FreeBSD le permite controlar el rango de numeros de
   puerto utilizados para asignacion dinamica a traves de las numerosas
   net.inet.ip.portrange de sysctl (sysctl -a | fgrep portrange), lo cual
   tambien facilita la complejidad de la configuracion de su cortafuegos. Por
   ejemplo, puede utilizar un rango normal primero/ultimo de 4000 o 5000, y
   un rango de puerto alto de 49152 a 65535; bloquee todo por debajo de 4000
   (excepto para ciertos puertos especificos accesibles desde Internet, por
   supuesto).

   Otro ataque DoS comun es llamado ataque "springboard": atacar un servidor
   de forma que genere respuestas que lo sobrecarguen, sobrecarguen la red
   local o alguna otra maquina. Los ataques mas comunes de este tipo son los
   ataques ICMP ping broadcast. El atacante falsifica paquetes ping enviados
   a la direccion broadcast de su LAN simulando que la direccion IP origen es
   la de la maquina que desean atacar. Si sus routers de frontera no estan
   configurados para lidiar con pings a direcciones de broadcast su LAN
   termina generando suficientes respuestas a la direccion origen falsificada
   como para saturar a la victima, especialmente cuando el atacante utiliza
   el mismo truco en varias docenas de direcciones broadcast en varias
   docenas de redes diferentes a la vez. Se han medido ataques de broadcast
   de mas de ciento veinte megabits. Un segundo tipo de ataque "springboard"
   bastante comun se da contra el sistema de informe de error de ICMP. Un
   atacante puede saturar la conexion entrante de red de un servidor mediante
   la construccion de paquetes que generen respuestas de error ICMP,
   provocando que el servidor sature su conexion saliente de red con
   respuestas ICMP. Este tipo de ataque tambien puede tumbar el servidor
   agotando sus "mbufs", especialmente si el servidor no puede drenar lo
   suficientemente rapido las respuestas ICMP que genera. El kernel de
   FreeBSD tiene una opcion de compilacion llamada ICMP_BANDLIM, que limita
   la efectividad de este tipo de ataques. La ultima gran categoria de
   ataques "springboard" esta relacionada con ciertos servicios de inetd,
   como el servicio de eco udp. El atacante simplemente imita un paquete UDP
   con el puerdo de eco del servidor A como direccion de origen, y el puerto
   eco del servidor B como direccion de destino, estando ambos servidores en
   la misma LAN. Un atacante puede sobrecargar ambos servidores y la propia
   LAN inyectando simplemente un par de paquetes. Existen problemas similares
   con el puerto chargen. Un administrador de sistemas competente apagara
   todos estos servicios internos de verificacion de inetd.

   Los ataques con paquetes falsificados pueden utilizarse tambien para
   sobrecargar la cache de rutas del kernel. Consulte los parametros de
   sysctl net.inet.ip.rtexpire, rtminexpire, y rtmaxcache. Un ataque de
   paquetes falsificados que utiliza una direccion IP origen aleatoria
   provocara que el kernel genere una ruta temporal en cache en su tabla de
   rutas, visible con netstat -rna | fgrep W3. Estas rutas suelen expiran en
   1600 segundos mas o menos. Si el kernel detecta que la tabla de rutas en
   cache es ya demasiado grande reducira dinamicamente rtexpire, pero nunca
   la reducira a un valor que sea menor que rtminexpire. Esto nos presenta
   dos problemas:

    1. El kernel no reacciona con suficiente rapidez cuando un servidor
       ligeramente cargado es atacado.

    2. El rtminexpire no es lo suficientemente bajo para que el kernel
       sobreviva a un ataque sostenido.

   Si sus servidores estan conectados a Internet mediante mediante una linea
   T3 o superior puede ser prudente corregir manualmente rtexpire y
   rtminexpire por medio de sysctl(8). Nunca ponga ambos parametros a cero (a
   menos que desee estrellar la maquina). Configurar ambos parametros a 2
   segundos deberia bastar para proteger de ataques la tabla de rutas.

  14.3.9. Otros aspectos del acceso con Kerberos y SSH

   Existen un par de detalles con respecto a Kerberos y ssh que debe analizar
   sy pretende usarlos. Kerberos V es un excelente protocolo de protocolo de
   autentificacion, pero hay errores en la version kerberizada de telnet y
   rlogin que las hacen inapropiadas para gestionar flujos binarios. Ademe
   Kerberos no cifra por defecto una sesion a menos que utilice la opcion -x.
   ssh cifra todo por defecto.

   ssh funciona bastante bien en todos los casos, con la sola salvedad de que
   por defecto reenvia llaves de cifrado. Esto significa que si usted tiene
   una estacion de trabajo segura, que contiene llaves que le dan acceso al
   resto del sistema, y hace ssh a una maquina insegura, sus llaves se pueden
   utilizar. Las llaves en si no se exponen, pero ssh crea un puerto de
   reenvio durante el login, y si un atacante ha comprometido el root de la
   maquina insegura, puede utilizar ese puerto para usar sus llaves y obtener
   acceso a cualquier otra maquina que sus llaves abran.

   Le recomendamos que, siempre que sea posible, use ssh combinado con
   Kerberos en los login de su personal de administracion. para logins de
   staff. Puede compilar ssh con soporte de Kerberos. Esto reducira su
   dependencia de llaves ssh expuestas, al mismo tiempo que protege las
   contrasenas via Kerberos. Las llaves ssh deben usarse solamente para
   tareas automaticas desde maquinas seguras (algo que Kerberos no hace por
   incompatibilidad). Recomendamos tambien que desactive el reenvio de llaves
   en la configuracion de ssh, o que use la opcion from=IP/DOMAIN que ssh
   incluye en authorized_keys; asi la llave solo podra ser utilizada por
   entidades que se validen desde maquinas especificas.

14.4. DES, MD5 y Crypt

   Secciones reescritas y actualizadas por Bill Swingle.

   Cada usuario de un sistema UNIX(R) tiene una contrasena asociada a su
   cuenta. Parece obvio que estas contrasenas solo deben ser conocidas por el
   usuario y por el sistema operativo. Para que estas contrasenas permanezcan
   en secreto se cifran con lo que se conoce como un "hash de una pasada",
   esto es, solo pueden ser facilmente cifradas pero no descifradas. En otras
   palabras, lo que acabamos de decir es tan obvio que ni siguiera es verdad:
   el propio sistema operativo no sabe cual es realmente la contrasena. Lo
   unico que conoce es la version cifrada de la contrasenna. La unica manera
   de obtener la contrasena en "texto plano" es por medio de una busqueda de
   fuerza bruta en el espacio de contrasenas posibles.

   Por desgracia la unica manera segura de cifrar contrasenas cuando UNIX(R)
   empezo a hacerlo estaba basada en DES, ("Data Encryption Standard",
   "estandar de cifrado de datos"). Esto no era un gran problema para
   usuarios residentes en los EEUU, pero el codigo fuente de FreeBSD no se
   podia exportar desde los EEUU, asi que FreeBSD hubo de buscar una forma de
   complir las leyes de EEUU y al mismo tiempo mantener la compatibilidad con
   otras variantes de UNIX(R) que que todavia utilizaban DES.

   La solucion fue dividir las bibliotecas de cifrado para que los usuarios
   de EEUU pudieran instalar las bibliotecas DES pero los usuarios del resto
   del mundo tuvieran un metodo de cifrado que pudiera ser exportado. Asi es
   como FreeBSD comenzo a usar MD5 como su metodo de cifrado por defecto. MD5
   se considera mas seguro que DES, asi que se mantiene la opcion de poder
   instalar DES por motivos de compatibilidad.

  14.4.1. Como reconocer su mecanismo de cifrado

   En versiones anteriores a FreeBSD 4.4 libcrypt.a era un enlace simbolico
   que apuntaba a la biblioteca que se usaba para el cifrado. En FreeBSD 4.4
   se cambio libcrypt.a para ofrecer una biblioteca hash configurable de
   validacion de contrasenas. Actualmente la biblioteca permite funciones
   hash DES, MD5 y Blowfish. FreeBSD utiliza por defecto MD5 para cifrar
   contrasenas.

   Es muy sencillo identificar que metodo usa FreeBSD para cifrar. Una forma
   es examinando las contrasenas cifradas en /etc/master.passwd. Las
   contrasenas cifradas con el hash MD5 son mas largas que las cifradas con
   el hash DES, y tambien comienzan por los caracteres $1$. Las contrasenas
   que comienzan por $2a$ estan cifradas con la funcion hash de Blowfish. Las
   contrasenas DES no tienen ninguna caracteristica particular, pero son mas
   cortas que las contrasenas MD5, y estan codificadas en un alfabeto de 64
   caracteres que no incluye el caracter $; es por esto que una cadena
   relativamente corta que comience con un signo de dolar es muy
   probablemente una contrasena DES.

   El formato de contrasena a usar en nuevas contrasenas se define en
   /etc/login.conf mediante passwd_format, pudiendo tener los valores des,
   md5 o blf. Consulte la pagina de manual login.conf(5) para mas
   informacion.

14.5. Contrasenas de un solo uso

   S/Key es un esquema de contrasena de un solo uso basado en una funcion de
   hash de sentido unico. FreeBSD utiliza el hash MD4 por compatibilidad,
   pero otros sistemas usan MD5 y DES-MAC. S/Key forma parte del sistema base
   de FreeBSD desde la version 1.1.5 y se usa tambien en un numero creciente
   de otros sistemas operativos. S/Key es una marca registrada de Bell
   Communications Research, Inc.

   A partir de la version 5.0 de FreeBSD S/Key fue reemplazado por su
   equivalente OPIE ("One-time Passwords In Everything", "Contrasenas de un
   solo uso para todo"). OPIE usa por defecto hash MD5.

   En esta seccion se explican tres tipos de contrasena. La primera es la
   tipica contrasena al estilo UNIX(R) o Kerberos; las llamaremos
   "contrasenas UNIX(R)". El segundo tipo es la contrasena de un solo uso,
   que se genera con el programa key de S/Key o con opiekey(1) de OPIE, y que
   aceptan los programas keyinit, opiepasswd(1), y el prompt de login;
   llamaremos a esta una "contrasena de un solo uso". El ultimo tipo de
   contrasena es la contrasena secreta que le da usted a los programas
   key/opiekey (y a veces keyinit/opiepasswd), que se usa para generar
   contrasenas de un solo uso; a estas las llamaremos "contrasenas secretas",
   o simplemente "contrasena".

   La contrasena secreta no tiene nada que ver con su contrasena UNIX(R);
   pueden ser la misma, pero no es recomendable. Las contrasenas secretas
   S/Key y OPIE no estan limitadas a 8 caracteres como las contrasenas
   UNIX(R) antiguas[8], pueden ser tan largas como se quiera. Las contrasenas
   con frases de seis o siete palabras muy largas son bastante comunes. El
   funcionamiento del sistema S/Key o el OPIE es en gran parte completamente
   independiente del sistema de contrasenas UNIX(R).

   Ademas de la contrasena hay dos datos que son importantes para S/Key y
   OPIE. Uno es lo que se conoce como "semilla" o "llave", que consiste en
   dos letras y cinco digitos. El otro dato importante se llama la "cuenta de
   iteracion", que es un numero entre 1 y 100. S/Key genera la contrasena de
   un solo uso concatenando la semilla y la contrasena secreta, aplica el
   hash MD4/MD5 tantas veces como especifique la cuenta de iteracion y
   convierte el resultado en seis palabras cortas en ingles. Estas seis
   palabras en ingles son su contrasena de un solo uso. El sistema de
   autentificacion (principalmente PAM) mantiene un registro del uso de
   contrasenas de un solo uso, y el usuario puede validarse si el hash de la
   contrasena que proporciona es igual a la contrasena previa. Como se
   utiliza un hash de sentido unico es imposible generar futuras contrasenas
   de un solo uso si una contrasena que ya ha sido usada fuera capturada; la
   cuenta de iteracion se reduce despues de cada login correcto para
   sincronizar al usuario con el programa login. Cuanto la iteracion llega a
   1, S/Key y OPIE deben reinicializar.

   Hay tres programas involucrados en cada uno de estos sistemas. Los
   programas key y opiekey aceptan una cuenta iterativa, una semilla y una
   contrasena secreta, y generan una contrasena de un solo uso o una lista
   consecutiva de contrasenas de un solo uso. Los programas keyinit y
   opiepasswd se usan respectivamente para inicializar S/Key y OPIE, y para
   cambiar contrasenas, cuentas iterativas o semillas; toman ya sea una frase
   secreta, o una cuenta iterativa y una contrasena de un solo uso. Los
   programas keyinfo y opieinfo examinan los ficheros de credenciales
   correspondientes (/etc/skeykeys o /etc/opiekeys) e imprimen la cuenta
   iterativa y semilla del usuario invocante.

   Explicaremos cuatro tipos de operaciones diferentes. La primera es usar
   keyinit o opiepasswd a traves de una conexion segura para configurar
   contrasenas de un solo uso por primera vez, o para cambiar su contrasena o
   semilla. La segunda operacion es utilizar keyinit o opiepasswd a traves de
   una conexion insegura, ademas de usar key u opiekey sobre una conexion
   segura para hacer lo mismo. La tercera es usar key/opiekey para conectarse
   a traves de una conexion insegura. La cuarta es usar opiekey o key para
   generar numerosas llaves, que pueden ser escritas para llevarlas con usted
   al ir a algun lugar desde el que no se puedan hacer conexiones seguras a
   ningun sitio.

  14.5.1. Inicializacion de conexiones seguras

   Para inicializar S/Key por primera vez cambie su contrasena, o cambie su
   semilla mientras esta conectado a traves de una conexion segura (esto es,
   en la consola de una maquina o via ssh); use keyinit sin ningun parametro:

 % keyinit
 Adding unfurl:
 Reminder - Only use this method if you are directly connected.
 If you are using telnet or rlogin exit with no password and use keyinit -s.
 Enter secret password:
 Again secret password:

 ID unfurl s/key is 99 to17757
 DEFY CLUB PRO NASH LACE SOFT

   En OPIE se utiliza opiepasswd:

 % opiepasswd -c
 [grimreaper] ~ $ opiepasswd -f -c
 Adding unfurl:
 Only use this method from the console; NEVER from remote. If you are using
 telnet, xterm, or a dial-in, type ^C now or exit with no password.
 Then run opiepasswd without the -c parameter.
 Using MD5 to compute responses.
 Enter new secret pass phrase:
 Again new secret pass phrase:
 ID unfurl OTP key is 499 to4268
 MOS MALL GOAT ARM AVID COED

   En Enter new secret pass phrase: o Enter secret password:, debe introducir
   una contrasena o frase. Recuerde que no es la contrasena que utilizara
   para entrar, se usara para generar sus llaves de un solo uso. La linea
   "ID" da los parametros de su instancia en particular: su nombre de login,
   la cuenta iterativa y semilla. En el momento del login el sistema
   recordara estos parametros y los presentara de nuevo para que no tenga que
   recordarlos. La ultima linea proporciona las contraseeas de un solo uso
   que corresponden a esos parametros y su contrasena secreta; si fuera a
   hacer login de manera inmediata, deberia usar esta contrasena de una sola
   vez.

  14.5.2. Inicializacion de conexiones inseguras

   Para inicializar o cambiar su contrasena secreta a traves de una conexion
   insegura, necesitara tener alguna conexion segura a algun lugar donde
   pueda ejecutar key u opiekey; puede ser gracias a un accesorio de
   escritorio o en una Macintosh(R), o un prompt de shell en una maquina en
   la que confie. Necesitara tambien una cuenta iterativa (100 probablemente
   sea un buen valor), y puede usar su propia semilla, o usar una generada
   aleatoriamente. Siguiendo con la conexion insegura (hacia la maquina que
   esta inicializando), ejecute keyinit -s:

 % keyinit -s
 Updating unfurl:
 Old key: to17758
 Reminder you need the 6 English words from the key command.
 Enter sequence count from 1 to 9999: 100
 Enter new key [default to17759]:
 s/key 100 to 17759
 s/key access password:
 s/key access password:CURE MIKE BANE HIM RACY GORE

   En OPIE debe usar opiepasswd:

 % opiepasswd

 Updating unfurl:
 You need the response from an OTP generator.
 Old secret pass phrase:
         otp-md5 498 to4268 ext
         Response: GAME GAG WELT OUT DOWN CHAT
 New secret pass phrase:
         otp-md5 499 to4269
         Response: LINE PAP MILK NELL BUOY TROY

 ID mark OTP key is 499 gr4269
 LINE PAP MILK NELL BUOY TROY

   Para aceptar la semilla por defecto (la que el programa keyinit llama key,
   "llave", para terminar de complicar las cosas), pulse Enter. Antes de
   introducir una una contrasena de acceso cambie a su conexion o accesorio
   de escritorio S/Key y dele el mismo parametro:

 % key 100 to17759
 Reminder - Do not use this program while logged in via telnet or rlogin.
 Enter secret password: <secret password>
 CURE MIKE BANE HIM RACY GORE

   O para OPIE:

 % opiekey 498 to4268
 Using the MD5 algorithm to compute response.
 Reminder: Don't use opiekey from telnet or dial-in sessions.
 Enter secret pass phrase:
 GAME GAG WELT OUT DOWN CHAT

   Vuelva a la conexion insegura y copie la contrasena de un solo uso
   generada al programa que quiera usar.

  14.5.3. Generacion una sola contrasena de un solo uso

   Una vez que ha inicializado S/Key u OPIE, cuando haga login vera un
   "prompt" parecido al siguiente:

 % telnet ejemplo.com
 Trying 10.0.0.1...
 Connected to ejemplo.com
 Escape character is '^]'.

 FreeBSD/i386 (ejemplo.com) (ttypa)

 login: <username>
 s/key 97 fw13894
 Password:

   O, en el caso de OPIE:

 % telnet ejemplo.com
 Trying 10.0.0.1...
 Connected to ejemplo.com
 Escape character is '^]'.

 FreeBSD/i386 (ejemplo.com) (ttypa)

 login: <nombre_de_usuario>
 otp-md5 498 gr4269 ext
 Password:

   Como una nota aparte, el "prompt" de S/Key y OPIE cuenta con una opcion
   util (que no se muestra aqui): si pulsa Enter en el "prompt" de contrasena
   el "prompt" activara el eco para que pueda ver en pantalla lo que teclea.
   Esto puede ser extremadamente util si esta tecleando una contrasena a a
   mano o desde un la lista impresa.

   Ahora necesitara generar su contrasena de un solo uso para responder a
   este "prompt" de login. Debe hacerlo en un sistema digno de confianza y en
   el que pueda ejecutar key u opiekey. Existen versiones DOS, Windows(R) y
   tambien para Mac OS(R). Ambos usaran la cuenta iterativa y la semilla como
   opciones de linea de ordenes. Puede cortarlas y pegarlas desde el "prompt"
   de login de la maquina en la que se esta identificando.

   En el sistema de confianza:

 % key 97 fw13894
 Reminder - Do not use this program while logged in via telnet or rlogin.
 Enter secret password:
 WELD LIP ACTS ENDS ME HAAG

   Con OPIE:

 % opiekey 498 to4268
 Using the MD5 algorithm to compute response.
 Reminder: Don't use opiekey from telnet or dial-in sessions.
 Enter secret pass phrase:
 GAME GAG WELT OUT DOWN CHAT

   Ahora que tiene su contrasena de un solo uso puede proceder con el login:

 login: <nombre_de_usuario>
 s/key 97 fw13894
 Password: <Enter para activar el eco>
 s/key 97 fw13894
 Password [echo on]: WELD LIP ACTS ENDS ME HAAG
 Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ...

  14.5.4. Generacion de multiples contrasenas de un solo uso

   A veces usted hay que ir a lugares donde no hay acceso a una maquina de
   fiar o a una conexion segura. En estos casos, puede utilizar key y opiekey
   para generar previamente numerosas contrasenas de un solo uso para, una
   vez impresas, llevarselas a donde hagan falta. Por ejemplo:

 % key -n 5 30 zz99999
 Reminder - Do not use this program while logged in via telnet or rlogin.
 Enter secret password: <secret password>
 26: SODA RUDE LEA LIND BUDD SILT
 27: JILT SPY DUTY GLOW COWL ROT
 28: THEM OW COLA RUNT BONG SCOT
 29: COT MASH BARR BRIM NAN FLAG
 30: CAN KNEE CAST NAME FOLK BILK

   O para OPIE:

 % opiekey -n 5 30 zz99999
 Using the MD5 algorithm to compute response.
 Reminder: Don't use opiekey from telnet or dial-in sessions.
 Enter secret pass phrase: <secret password>
 26: JOAN BORE FOSS DES NAY QUIT
 27: LATE BIAS SLAY FOLK MUCH TRIG
 28: SALT TIN ANTI LOON NEAL USE
 29: RIO ODIN GO BYE FURY TIC
 30: GREW JIVE SAN GIRD BOIL PHI

   El -n 5 pide cinco llaves en secuencia, la opcion 30 especifica que ese
   debe ser el ultimo numero de iteracion. Observe que se imprimen en el
   orden inverso de uso. Si es realmente paranoico escriba los resultados a
   mano; si no, puede enviar la salida a lpr. Observe que cada linea muestra
   la cuenta iterativa y la contrasena de un solo uso; puede ir tachando las
   contrasenas segun las vaya utilizando.

  14.5.5. Restriccion del uso de contrasenas UNIX(R)

   S/Key puede implantar restricciones en el uso de contrasenas UNIX(R)
   basandose en el nombre de equipo, nombre de usuario, puerto de terminal o
   direccion IP de una sesion de login. Consulte el fichero de configuracion
   /etc/skey.access. La pagina de manual de skey.access(5) contiene mas
   informacion sobre el formato del fichero y detalla tambien algunas
   precauciones de seguridad que hay que tener en cuenta antes de basar
   nuestra seguridad en este fichero.

   Si /etc/skey.access no existiera (por defecto es asi en sistemas
   FreeBSD 4.X) todos los usuarios podran disponer de contrasenas UNIX(R). Si
   el fichero existe se exigira a todos los usuarios el uso de S/Key, a menos
   que se configure de otro modo en skey.access. En todos los casos las
   contrasenas UNIX(R) son admiten en consola.

   Aqui hay un ejemplo del fichero de configuracion skey.access que muestra
   las tres formas mas comunes de configuracion:

 permit internet 192.168.0.0 255.255.0.0
 permit user fnord
 permit port ttyd0

   La primera linea (permit internet) permite a usuarios cuyas direcciones IP
   origen (las cuales son vulnerables a una falsificacion) concuerden con los
   valores y mascara especificados utilizar contrasenas UNIX(R). Esto no debe
   usarse como mecanismo de seguridad, sino como medio de recordarle a los
   usuarios autorizados que estan usando una red insegura y necesitan
   utilizar S/Key para la validacion.

   La segunda linea (permit user) permite al nombre de usuario especificado,
   en este caso fnord, utilizar contrasenas UNIX(R) en cualquier momento.
   Hablando en general, esto solo debe ser usado por gente que no puede usar
   el programa key, como aquellos con terminales tontas o refractarios al
   aprendizaje.

   La tercera linea (permit port) permite a todos los usuarios validados en
   la linea de terminal especificada utilizar contrasenas UNIX(R); esto puede
   usarse para usuarios que se conectan mediante "dial-ups".

   OPIE puede restringir el uso de contrasenas UNIX(R) basandose en la
   direccion IP de una sesion de login igual que lo haria S/Key. El fichero
   que gestiona esto es /etc/opieaccess, que esta incluido por defecto en
   sistemas FreeBSD 5.0 o posteriores. Revise opieaccess(5) para mas
   informacion sobre este fichero y que consideraciones de seguridad debe
   tener presentes a la hora de usarlo.

   Veamos un ejemplo de opieaccess:

 permit 192.168.0.0 255.255.0.0

   Esta linea permite a usuarios cuya direccion IP de origen (vulnerable a
   falsificacion) concuerde con los valores y mascara especificados, utilizar
   contrasenas UNIX(R) en cualquier momento.

   Si no concuerda ninguna regla en opieaccess se niegan por defecto los
   logins no-OPIE.

14.6. TCP Wrappers

   Escrito por: Tom Rhodes.

   Cualquiera que este familiarizado con inetd(8) probablemente haya oido
   hablar de TCP Wrappers, pero poca gente parece comprender completamente su
   utilidad en un entorno de red. Parece que todos quieren instalar un
   cortafuegos para manejar conexiones de red. Aunque un cortafuegos tiene
   una amplia variedad de usos hay cosas que un cortafuegos no es capaz de
   gestionar, como el envio de texto como respuesta al creador de la
   conexion. El software TCP hace esto y mas. En las siguientes secciones se
   explicaran unas cuantas opciones de TCP Wrappers y, cuando sea necesario,
   se mostraran ejemplos de configuraciones.

   El software TCP Wrappers extiende las habilidades de inetd para ofrecer
   soporte para cada servidor daemon bajo su control. Utilizando este metodo
   es posible proveer soporte de logs, devolver mensajes a conexiones,
   permitir a un daemon aceptar solamente conexiones internas, etc. Aunque
   algunas de estas opciones pueden conseguirse gracias a un cortafuegos, no
   solo anadira una capa extra de seguridad, sino que ira mas alla del nivel
   de control ue un cortafuegos puede ofrecerle.

   Las brillantes capacidades de TCP Wrappers no deben considerarse una
   alternativa a un buen cortafuegos. TCP Wrappers puede usarse conjuntamente
   con un cortafuegos u otro sistema de de seguridad, pues ofrece una capa
   extra de proteccion para el sistema.

   Ya que es una extension de la configuracion de inetd, se da por hecho que
   el lector ha leido la seccion configuracion de inetd.

  Nota:

   Aunque los programas ejecutados por inetd(8) no son exactamente "daemons"
   tradicionalmente han recibido ese nombre. Daemon es, por tanto, el termino
   que usaremos en esta seccion.

  14.6.1. Configuracion inicial

   El unico requisito para usar TCP Wrappers en FreeBSD es que el servidor
   inetd se inicie desde rc.conf con la opcion -Ww (es la configuracion por
   defecto). Por descontado, se presupone que /etc/hosts.allow estara
   correctamente configurado, pero syslogd(8) enviara mensajes a los logs del
   sistema si no es asi.

  Nota:

   A diferencia de otras implementaciones de TCP Wrappers, se ha dejado de
   usar hosts.deny. Todas las opciones de configuracion deben ir en
   /etc/hosts.allow.

   En la configuracion mas simple las politicas de conexion de daemons estan
   configuradas ya sea a permitir o bloquear, dependiendo de las opciones en
   /etc/hosts.allow. La configuracion por defecto en FreeBSD consiste en
   permitir una conexion a cada daemon iniciado por inetd. Es posible
   modificar esta configuracion, pero explicaremos como hacerlo despues de
   exponer la configuracion basica.

   La configuracion basica tiene la estructura daemon : direccion : accion,
   donde daemon es el nombre de daemon que inicia inetd. La direccion puede
   ser un nombre de equipo valido, una direccion IP o IPv6 encerrada en
   corchetes ([ ]). El campo accion puede ser permitir o denegar para el dar
   el acceso apropiado. Tenga presente que la configuracion funciona en base
   a la primera regla cuya semantica concuerde; esto significa que el fichero
   de configuracion se lee en orden ascendente hasta que concuerde una regla.
   Cuando se encuentra una concordancia se aplica la regla y el proceso se
   detendra.

   Existen muchas otras opciones pero estas se explican en una seccion
   posterior. Una linea de configuracion simple puede generarse mediante
   datos asi de simples. Por ejemplo, para permitir conexiones POP3 mediante
   el daemon mail/qpopper, anada las siguientes lineas a hosts.allow:

 # This line is required for POP3 connections:
 qpopper : ALL : allow

   Despues de anadir esta linea tendra que reiniciar inetd. Use kill(1) o use
   el parametro restart de /etc/rc.d/inetd.

  14.6.2. Configuracion avanzada

   Las opciones avanzadas de TCP Wrappers le permiten un mayor control sobre
   la gestion de conexiones. En algunos casos puede convenir el enio de un
   comentario a ciertos equipos o conexiones de daemons. En otros casos,
   quizas se deba registrar una entrada en un log o enviar un correo al
   administrador. Otro tipo de situaciones pueden requerir el uso de un
   servicio solamente para conexiones locales. Todo esto es posible gracias
   al uso de unas opciones de configuracion conocidas como comodines,
   caracteres de expansion y ejecucion de ordenes externas. Las siguientes
   dos secciones intentaran cubrir estas situaciones.

    14.6.2.1. Ordenes externas

   Imaginemos una situacion en la que una conexion debe ser denegada pero se
   debe mandar un motivo a quien intento establecer esa conexion. ?Como?
   Mediante la opcion twist. Ante un intento de conexion se invoca a twist,
   que ejecuta una orden de shell o un "script". Tiene un ejemplo en el
   fichero hosts.allow:

 # The rest of the daemons are protected.
 ALL : ALL \
         : severity auth.info \
         : twist /bin/echo "No se permite utilizar %d desde %h."

   Este ejemplo muestra que el mensaje, "No se permite utilizar daemon desde
   nombre de equipo." se enviara en el caso de cualquier daemon no
   configurado previamente en el fichero de acceso. Esto es extremadamente
   util para enviar una respuesta al creador de la conexion justo despues de
   que la conexion establecida es rechazada. Observe que cualquier mensaje
   que se desee enviar debe ir entre comillas "; esta regla no tiene
   excepciones.

  Aviso:

   Es posible lanzar un ataque de denegacion de servicio al servidor si un
   atacante o grupo de atacantes pueden llegar a sobrecargar estos daemons
   con peticiones de conexion.

   Otra posibilidad en estos casos es usar la opcion spawn. Igual que twist,
   spawn niega implicitamente la conexion, y puede usarse para ejecutar
   ordenes de shell externos o "scripts". A diferencia de twist, spawn no
   enviara una respuesta al origen de la conexion. Veamos un ejemplo; observe
   la siguiente linea de configuracion:

 # No permitimos conexiones desde ejemplo.com:
 ALL : .ejemplo.com \
         : spawn (/bin/echo %a desde %h intento acceder a %d >> \
           /var/log/connections.log) \
         : deny

   Esto denegara todos los intentos de conexion desde el dominio
   *.ejemplo.com; simultaneamente creara una entrada con el nombre del
   equipo, direccion IP y el daemon al que intento conectarse al fichero
   /var/log/connections.log.

   Ademas de la sustitucion de caracteres ya expuesta mas arriba (por ejemplo
   %a) existen unas cuantas mas. Si quiere ver la lista completa consulte la
   pagina de manual hosts_access(5).

    14.6.2.2. Opciones comodin

   Hasta ahora se ha usado ALL en todos los ejemplos, pero hay otras opciones
   interesantes para extender un poco mas la funcionalidad. Por ejemplo, ALL
   puede usarse para concordar con cualquier instancia ya sea un daemon,
   dominio o direccion IP. Otro comodin es PARANOID, que puede utilizarse
   para concordar con cualquier equipo que presente una direccion IP que
   pueda estar falsificada. En otras palabras, paranoid puede usarse para
   definir una accion a tomar siempre que tenga lugar una conexion desde una
   direccion IP que difiera de su nombre de equipo. Quizas todo se vea mas
   claro con el siguiente ejemplo:

 # Bloquear peticiones posiblemente falsificadas a sendmail:
 sendmail : PARANOID : deny

   En ese ejemplo todas las peticiones de conexion a sendmail que tengan una
   direccion IP que varie de su nombre de equipo seran denegadas.

  Atencion:

   Utilizando PARANOID puede bloquear el acceso a servidores si el cliente o
   el servidor tiene una configuracion de DNS incorrecta. Recomendamos al
   administrador la maxima cautela en su uso.

   Consulte hosts_access(5) si quiere saber mas sobre los comodines y sus
   posibilidades de uso.

   Si quiere que cualquiera de los ejemplos citados funcione debe comentar la
   primera linea de hosts.allow (tal y como se dijo al principio de la
   seccion.

14.7. KerberosIV

   Escrito por Mark Murray.
   Basado en un texto de Mark Dapoz.

   Kerberos es un sistema/protocolo de red agregado que permite a los
   usuarios identificarse a traves de los servicios de un servidor seguro.
   Los servicios como login remoto, copia remota, copias de ficheros de un
   sistema a otro y otras tantas tareas arriesgadas pasan a ser
   considerablemente seguras y mas controlables.

   Las siguientes instrucciones pueden usarse como una guia para configurar
   Kerberos tal y como se distribuye con FreeBSD. De todas maneras, debe
   consultar diversas paginas de manual para conocer todos los detalles.

  14.7.1. Instalacion de KerberosIV

   Kerberos es un componente opcional de FreeBSD. La manera mas facil de
   instalar este software es seleccionando la distribucion krb4 o krb5 en
   sysinstall durante la instalacion inicial de FreeBSD. Desde ahi instalara
   la implementacion de Kerberos "eBones" (KerberosIV) o "Heimdal"
   (Kerberos5). Estas implementaciones se incluyen porque a que han sido
   desarrolladas fuera de EEUU y Canada, lo que las convertia en accesibles
   para administradores de sistemas del resto del mundo durante la epoca
   restrictiva de control control de exportaciones de codigo criptografico
   desde EEUU.

   Tambien puede instalar la implementacion de Kerberos del MIT desde la
   coleccion de ports (security/krb5).

  14.7.2. Creacion de la base de datos inicial

   Esto solo debe hacerse en el servidor Kerberos. Lo primero es asegurarse
   de que no tiene bases de datos de Kerberos anteriores. Entre al directorio
   /etc/kerberosIV y asegurese de que solo esten los siguientes ficheros:

 # cd /etc/kerberosIV
 # ls
 README          krb.conf        krb.realms

   Si existe cualquier otro fichero (como principal.* o master_key) utilice
   kdb_destroy para destruir la base de datos antigua de Kerberos. Si
   Kerberos no esta funcionando simplemente borre los ficheros sobrantes.

   Edite krb.conf y krb.realms para definir su dominio Kerberos. En nuestro
   ejemplo el dominio sera EJEMPLO.COM y el servidor es grunt.ejemplo.com.
   Editamos o creamos krb.conf:

 # cat krb.conf
 EJEMPLO.COM
 EJEMPLO.COM grunt.ejemplo.com admin server
 CS.BERKELEY.EDU okeeffe.berkeley.edu
 ATHENA.MIT.EDU kerberos.mit.edu
 ATHENA.MIT.EDU kerberos-1.mit.edu
 ATHENA.MIT.EDU kerberos-2.mit.edu
 ATHENA.MIT.EDU kerberos-3.mit.edu
 LCS.MIT.EDU kerberos.lcs.mit.edu
 TELECOM.MIT.EDU bitsy.mit.edu
 ARC.NASA.GOV trident.arc.nasa.gov

   Los demas dominios no deben estar forzosamente en la configuracion. Los
   hemos incluido como ejemplo de como puede hacerse que una maquina trabaje
   con multiples dominios. Si quiere mantener todo simple puede abstenerse de
   incluirlos.

   La primera linea es el dominio en el que el sistema funcionara. Las demas
   lineas contienen entradas dominio/equipo. El primer componente de cada
   linea es un dominio y el segundo es un equipo de ese dominio, que actua
   como "centro de distribucion de llaves". Las palabras admin server que
   siguen al nombre de equipo significan que ese equipo tambien ofrece un
   servidor de base da datos administrativo. Si quiere consultar una
   explicacion mas completa de estos terminos consulte las paginas de manual
   de de Kerberos.

   Ahora anadiremos grunt.ejemplo.com al dominio EJEMPLO.COM y tambien una
   entrada para poner todos los equipos en el dominio .ejemplo.com Kerberos
   EJEMPLO.COM. Puede actualizar su krb.realms del siguiente modo:

 # cat krb.realms
 grunt.ejemplo.com EJEMPLO.COM
 .ejemplo.com EJEMPLO.COM
 .berkeley.edu CS.BERKELEY.EDU
 .MIT.EDU ATHENA.MIT.EDU
 .mit.edu ATHENA.MIT.EDU

   Igual que en caso previo, no tiene por que incluir los demas dominios. Se
   han incluido para mostrar como puede usar una maquina en multiples
   dominios. Puede eliminarlos y simplificar la configuracion.

   La primera linea pone al sistema especifico en el dominio nombrado. El
   resto de las lineas muestran como asignar por defecto sistemas de un
   subdominio a un dominio Kerberos.

   Ya podemos crear la base de datos. Solo se ejecuta en el servidor Kerberos
   (o centro de distribucion de llaves). Ejecute kdb_init:

 # kdb_init
 Realm name [default  ATHENA.MIT.EDU ]: EJEMPLO.COM
 You will be prompted for the database Master Password.
 It is important that you NOT FORGET this password.

 Enter Kerberos master key:

   Ahora tendremos que guardar la llave para que los servidores en la maquina
   local puedan recogerla. Utilice kstash:

 # kstash

 Enter Kerberos master key:

 Current Kerberos master key version is 1.

 Master key entered. BEWARE!

   Esto guarda la contrasena cifrada maestra en /etc/kerberosIV/master_key.

  14.7.3. Puesta en marcha del sistema

   Tendra que anadir a la base de datos dos entradas en concreto para cada
   sistema que vaya a usar Kerberos: kpasswd y rcmd. Se hacen para cada
   sistema individualmente cada sistema, y el campo "instance" es el nombre
   individual del sistema.

   Estos daemons kpasswd y rcmd permiten a otros sistemas cambiar contrasenas
   de Kerberos y ejecutar ordenes como rcp(1), rlogin(1) y rsh(1).

   Ahora vamos a anadir estas entradas:

 # kdb_edit
 Opening database...

 Enter Kerberos master key:

 Current Kerberos master key version is 1.

 Master key entered.  BEWARE!
 Previous or default values are in [brackets] ,
 enter return to leave the same, or new value.

 Principal name: passwd
 Instance: grunt

 <Not found>, Create [y] ? y

 Principal: passwd, Instance: grunt, kdc_key_ver: 1
 New Password:                    <---- tecleo aleatorio
 Verifying password

 New Password: <---- tecleo aleatorio

 Random password [y] ? y

 Principal's new key version = 1
 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
 Max ticket lifetime (*5 minutes) [ 255 ] ?
 Attributes [ 0 ] ?
 Edit O.K.
 Principal name: rcmd
 Instance: grunt

 <Not found>, Create [y] ?

 Principal: rcmd, Instance: grunt, kdc_key_ver: 1
 New Password:           <---- tecleo aleatorio
 Verifying password

 New Password:           <---- tecleo aleatorio

 Random password [y] ?

 Principal's new key version = 1
 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
 Max ticket lifetime (*5 minutes) [ 255 ] ?
 Attributes [ 0 ] ?
 Edit O.K.
 Principal name:         <---- si introduce datos nulos saldra del programa

  14.7.4. Creacion del fichero del servidor

   Ahora tendremos que extraer todas las instancias que definen los servicios
   en cada maquina; para ello usaremos ext_srvtab. Esto creara un fichero que
   debe ser copiado o movido por medios seguros al directorio /etc/kerberosIV
   de cada cliente Kerberos. Este fichero debe existir en todos los
   servidores y clientes dada su importancia clave para el funcionamiento de
   Kerberos.

 # ext_srvtab grunt
 Enter Kerberos master key:

 Current Kerberos master key version is 1.

 Master key entered. BEWARE!
 Generating 'grunt-new-srvtab'....

   Esta orden solo genera un fichero temporal al que tendra que cambiar el
   nombre a srvtab para que todos los servidores puedan recogerlo. Utilice
   mv(1) para moverlo al lugar correcto en el sistema original:

 # mv grunt-new-srvtab srvtab

   Si el fichero es para un sistema cliente y la red no puede considerarse
   segura copie el cliente-new-srvtab en un medio extraible y transportelo
   por medios fisicos seguros. Asegurese de cambiar su nombre a srvtab en el
   directorio /etc/kerberosIV del cliente, y asegurese tambien de que tiene
   modo 600:

 # mv grumble-new-srvtab srvtab
 # chmod 600 srvtab

  14.7.5. Anadir entradas a la base de datos

   Ahora tenemos que anadir entradas de usuarios a la base de datos. Primero
   vamos a crear una entrada para el usuario jane. Para ello usaremos
   kdb_edit:

 # kdb_edit
 Opening database...

 Enter Kerberos master key:

 Current Kerberos master key version is 1.

 Master key entered.  BEWARE!
 Previous or default values are in [brackets] ,
 enter return to leave the same, or new value.

 Principal name: jane
 Instance:

 <Not found>, Create [y] ? y

 Principal: jane, Instance: , kdc_key_ver: 1
 New Password:                <---- introduzca una constrasena segura
 Verifying password

 New Password:                <---- introduzca de nuevo la contrasena
 Principal's new key version = 1
 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
 Max ticket lifetime (*5 minutes) [ 255 ] ?
 Attributes [ 0 ] ?
 Edit O.K.
 Principal name:            <---- si introduce datos nulos saldra del programa

  14.7.6. Prueba del sistema

   Primero tenemos que iniciar los daemons de Kerberos. Tenga en cuenta que
   si su /etc/rc.conf esta configurado correctamente el inicio tendra ligar
   cuando reinicie el sistema. Esta prueba solo es necesaria en el servidor
   Kerberos; los clientes Kerberos tomaran lo que necesiten automaticamente
   desde el directorio /etc/kerberosIV.

 # kerberos &
 Kerberos server starting
 Sleep forever on error
 Log file is /var/log/kerberos.log
 Current Kerberos master key version is 1.

 Master key entered. BEWARE!

 Current Kerberos master key version is 1
 Local realm: EJEMPLO.COM
 # kadmind -n &
 KADM Server KADM0.0A initializing
 Please do not use 'kill -9' to kill this job, use a
 regular kill instead

 Current Kerberos master key version is 1.

 Master key entered.  BEWARE!

   Ahora podemos probar a usar kinit para obtener un ticket para el ID jane
   que creamos antes:

 % kinit jane
 MIT Project Athena (grunt.ejemplo.com)
 Kerberos Initialization for "jane"
 Password:

   Pruebe a listar los tokens con klist para ver si realmente estan:

 % klist
 Ticket file:    /tmp/tkt245
 Principal:      jane@EJEMPLO.COM

   Issued           Expires          Principal
 Apr 30 11:23:22  Apr 30 19:23:22  krbtgt.EJEMPLO.COM@EJEMPLO.COM

   Ahora trate de cambiar la contrasena usando passwd(1) para comprobar si el
   daemon kpasswd esta autorizado a acceder a la base de datos Kerberos:

 % passwd
 realm EJEMPLO.COM
 Old password for jane:
 New Password for jane:
 Verifying password
 New Password for jane:
 Password changed.

  14.7.7. Anadir privilegios de su

   Kerberos nos permite dar a cada usuario que necesite privilegios de root
   su propia contrasena para su(1). Podemos agregar un ID que este autorizado
   a ejecutar su(1) root. Esto se controla con una instancia de root asociada
   con un usuario. Vamos a crear una entrada jane.root en la base de datos,
   para lo que recurrimos a kdb_edit:

 # kdb_edit
 Opening database...

 Enter Kerberos master key:

 Current Kerberos master key version is 1.

 Master key entered.  BEWARE!
 Previous or default values are in [brackets] ,
 enter return to leave the same, or new value.

 Principal name: jane
 Instance: root

 <Not found>, Create [y] ? y

 Principal: jane, Instance: root, kdc_key_ver: 1
 New Password:                    <---- introduzca una contrasena SEGURA
 Verifying password

 New Password:                    <---- introduzca otra vez la constrasena

 Principal's new key version = 1
 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
 Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- Keep this short!
 Attributes [ 0 ] ?
 Edit O.K.
 Principal name:                  <---- si introduce datos nulos saldra del programa

   Ahora trate de obtener los tokens para comprobar que todo funciona:

 # kinit jane.root
 MIT Project Athena (grunt.ejemplo.com)
 Kerberos Initialization for "jane.root"
 Password:

   Hemos de agregar al usuario al .klogin de root:

 # cat /root/.klogin
 jane.root@EJEMPLO.COM

   Ahora trate de hacer su(1):

 % su
 Password:

   y eche un vistazo a que tokens tenemos:

 # klist
 Ticket file:    /tmp/tkt_root_245
 Principal:      jane.root@EJEMPLO.COM

   Issued           Expires          Principal
 May  2 20:43:12  May  3 04:43:12  krbtgt.EJEMPLO.COM@EJEMPLO.COM

  14.7.8. Uso de otras ordenes

   En un ejemplo anterior creamos un usuario llamado jane con una instancia
   root. Nos basamos en un usuario con el mismo nombre del "principal"
   (jane), el procedimiento por defecto en Kerberos: <principal>.<instancia>
   con la estructura <nombre de usuario>.root permitira que <nombre de
   usuario> haga su(1) a root si existen las entradas necesarias en el
   .klogin que hay en el directorio home de root:

 # cat /root/.klogin
 jane.root@EJEMPLO.COM

   De la misma manera, si un usuario tiene en su directorio home lo
   siguiente:

 % cat ~/.klogin
 jane@EJEMPLO.COM
 jack@EJEMPLO.COM

   significa que cualquier usuario del dominio EJEMPLO.COM que se identifique
   como jane o como jack (via kinit, ver mas arriba) podra acceder a la
   cuenta de jane o a los ficheros de este sistema (grunt) via rlogin(1),
   rsh(1) o rcp(1).

   Veamos por ejemplo como jane se se identifica en otro sistema mediante
   Kerberos:

 % kinit
 MIT Project Athena (grunt.ejemplo.com)
 Password:
 % rlogin grunt
 Last login: Mon May  1 21:14:47 from grumble
 Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
         The Regents of the University of California.   All rights reserved.

 FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995

   Aqui jack se identifica con la cuenta de jane en la misma maquina (jane
   tiene configurado su fichero .klogin como se ha mostrado antes, y la
   persona encargada de la administracion de Kerberos ha configurado un
   usuario principal jack con una instancia nula):

 % kinit
 % rlogin grunt -l jane
 MIT Project Athena (grunt.ejemplo.com)
 Password:
 Last login: Mon May  1 21:16:55 from grumble
 Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
         The Regents of the University of California.   All rights reserved.
 FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995

14.8. Kerberos5

   Texto de Tillman Hodgson.
   Basado en un texto de Mark Murray.

   Cada version de FreeBSD posterior a FreeBSD-5.1 incluye soporte solamente
   para Kerberos5. Por esta razon Kerberos5 es la unica version incluida. Su
   configuracion es similar en muchos aspectos a la de KerberosIV. La
   siguiente informacion solo atane a Kerberos5 en versiones de FreeBSD-5.0 o
   posteriores. Los usuarios que deseen utilizar KerberosIV pueden instalar
   el port security/krb4.

   Kerberos es un sistema/protocolo agregado para red que permite a los
   usuarios validar su identidad a traves de los servicios de un servidor
   seguro. Los servicios como login remoto, copia remota, copias de fichero
   de un sistema a otro y otras tareas generalmente consideradas poco seguras
   pasan a ser considerablemente seguras y mas controlables.

   Kerberos puede describirse como un sistema proxy
   identificador/verificador. Tambien puede describirse como un sistema
   confiable de autentificacion de terceros. Kerberos solamente ofrece una
   funcion: la validacion segura de usuarios a traves de una red. No
   proporciona funciones de autorizacion (es decir, lo que los usuarios
   tienen permitido hacer) o funciones de auditoria (lo que esos usuarios
   hicieron). Despues de que un servidor y un cliente han usado Kerberos para
   demostrar su identidad pueden tambien cifrar todas sus sus comunicaciones,
   asegurando de este modo su intimidad y la integridad de sus datos durante
   su uso del sistema.

   Es, por tanto, altamente recomendable que se use Kerberos ademas de otros
   metodos de seguridad que ofrezcan servicios de autorizacion y auditoria.

   Puede usar las siguientes instrucciones como una guia para configurar
   Kerberos tal y como se distribuye en FreeBSD. De todas maneras, deberia
   consultar las paginas de manual adecuadas para tener toda la informacion.

   Vamos a mostrar una instalacion Kerberos, para lo cual usaremos los
   siguientes espacios de nombres:

     * El dominio DNS ("zona") sera ejemplo.org.

     * El dominio Kerberos (realm) sera EJEMPLO.ORG.

  Nota:

   Debe utilizar nombres de dominio reales al configurar Kerberos incluso si
   pretende ejecutarlo internamente. Esto le evitara problemas de DNS y
   asegura la interoperacion con otros dominios Kerberos.

  14.8.1. Historia

   Kerberos fue creado en el Massachusetts Institute of Technology (MIT) como
   una solucion a los problemas de seguridad de la red. El protocolo Kerberos
   utiliza criptografia fuerte para que un cliente pueda demostrar su
   identidad en un servidor (y viceversa) a traves de una conexion de red
   insegura.

   Kerberos es el nombre de un protocolo de autentificacion via red y un
   adjetivo para describir programas que implementan el programa (Kerberos
   telnet, por ejemplo, conocido tambien como el "telnet kerberizado"). La
   version actual del protocolo es la 5, descrita en RFC 1510.

   Existen diversas implementaciones libres de este protocolo, cubriendo un
   amplio rango de sistemas operativos. El MIT, donde Kerberos fue
   desarrollado, continua desarrollando su propio paquete Kerberos. Suele
   usarse en los EEUU como producto criptografico y como tal ha sufrido las
   regulaciones de exportacion de los EEUU. El Kerberos del MIT existe como
   un port en (security/krb5). Heimdal Kerberos es otra implementacion de la
   version 5, y fue desarrollada de forma intencionada fuera de los EEUU para
   sortear las regulaciones de exportacion (y por eso puede incluirse en
   versiones no comerciales de UNIX(R)). La distribucion Heimdal Kerberos
   esta en el port (security/heimdal), y se incluye una instalacion minima en
   el sistema base de FreeBSD.

   Para alcanzar la mayor audiencia estas instrucciones asumen el uso de la
   distribucion Heimdal incluida en FreeBSD.

  14.8.2. Configuracion de un KDC Heimdal

   El centro de distribucion de llaves (KDC, Key Distribution Center) es el
   servicio centralizado de validacion que proporciona Kerberos: es el
   sistema que emite tickets Kerberos. El KDC goza del estatus de ser
   considerado como "confiable" por las demas computadoras del dominio
   Kerberos, y por eso tiene consideraciones de seguridad mas elevadas.

   Tenga en cuenta que, aunque la ejecucion del servidor Kerberos requiere
   muy pocos recursos, se recomienda el uso de una maquina dedicada a KDC por
   razones de seguridad.

   Para empezar a configurar un KDC asegurese de que su /etc/rc.conf contenga
   la configuracion adecuada para actuar como KDC (tal vez deba ajustar
   algunas rutas para que cuadren con su sistema):

 kerberos5_server_enable="YES"
 kadmind5_server_enable="YES"
 kerberos_stash="YES"

  Nota:

   kerberos_stash solo existe en FreeBSD 4.X.

   A continuacion configuraremos el fichero de configuracion de Kerberos,
   /etc/krb5.conf:

 [libdefaults]
     default_realm = EJEMPLO.ORG [realms]
     EXAMPLE.ORG = {
         kdc = kerberos.ejemplo.org
         admin_server = kerberos.ejemplo.org
     }
 [domain_realm]
     .ejemplo.org = EJEMPLO.ORG

   Tenga en cuenta que este /etc/krb5.conf implica que su KDC tendra el
   nombre de equipo completo calificado de kerberos.ejemplo.org. Necesitara
   anadir una entrada CNAME (alias) a su fichero de zona si su KDC tiene un
   nombre de equipo diferente.

  Nota:

   En grandes redes con un servidor DNS BIND bien configurado, el ejemplo de
   arriba puede quedar del siguiente modo:

 [libdefaults]
       default_realm = EJEMPLO.ORG

   Con las siguientes lineas agregadas al fichero de zona ejemplo.org:

 _kerberos._udp      IN  SRV     01 00 88 kerberos.ejemplo.org.
 _kerberos._tcp      IN  SRV     01 00 88 kerberos.ejemplo.org.
 _kpasswd._udp       IN  SRV     01 00 464 kerberos.ejemplo.org.
 _kerberos-adm._tcp  IN  SRV     01 00 749 kerberos.ejemplo.org.
 _kerberos           IN  TXT     EJEMPLO.ORG

  Nota:

   Para que los clientes sean capaces de encontrar los servicios Kerberos
   debe tener ya sea un /etc/krb5.conf configurado o un /etc/krb5.conf
   configurado de forma minima y un servidor DNS configurado correctamente.

   A continuacion crearemos la base de datos Kerberos. Esta base de datos
   contiene las llaves de todos los principales cifradas con una contrasena
   maestra. No es necesario que recuerde esta contrasena, pues se almacenara
   en /var/heimdal/m-key. Para crear la llave maestra ejecute kstash e
   introduzca una contrasena.

   Una vez que se ha creado la llave maestra puede inicializar la base de
   datos usando el programa kadmin con la opcion -l (que significa "local").
   Esta opcion le dice a kadmin que modifique los ficheros de la base de
   datos directamente en lugar de ir a traves del servicio de red kadmind.
   Esto gestiona el problema del huevo y la gallina de tratar de conectar a
   la base de datos antes de que esta exista. Una vez que tiene el "prompt"
   de kadmin, utilice init para crear su base de datos de dominios iniciales.

   Para terminar, mientras esta todavia en kadmin puede crear su primer
   principal mediante add. Utilice las opciones por defecto por ahora, mas
   tarde puede cambiarlas mediante modify. Recuerde que puede usar ? en
   cualquier "prompt" para consultar las opciones disponibles.

   Veamos un ejemplo de sesion de creacion de una base de datos:

 # kstash
 Master key: xxxxxxxx
 Verifying password - Master key: xxxxxxxx

 # kadmin -l
 kadmin> init EJEMPLO.ORG
 Realm max ticket life [unlimited]:
 kadmin> add tillman
 Max ticket life [unlimited]:
 Max renewable life [unlimited]:
 Attributes []:
 Password: xxxxxxxx
 Verifying password - Password: xxxxxxxx

   Ahora puede arrancar los servicios KDC. Ejecute /etc/rc.d/kerberos start y
   /etc/rc.d/kadmind start para levantar dichos servicios. Recuerde que no
   tendra ningun daemon kerberizado ejecutandose pero debe poder confirmar
   que KDC funciona por el procedimiento de obtener y listar un boleto del
   principal (usuario) que acaba de crear en la linea de ordenes de KDC:

 % k5init tillman
 tillman@EJEMPLO.ORG's Password:

 % k5list
 Credentials cache: FILE:/tmp/krb5cc_500
         Principal: tillman@EJEMPLO.ORG

   Issued           Expires          Principal
 Aug 27 15:37:58  Aug 28 01:37:58  krbtgt/EJEMPLO.ORG@EJEMPLO.ORG

  14.8.3. Creacion de un servidor Kerberos con servicios Heimdal

   Antes de nada necesitaremos una copia del fichero de configuracion de
   Kerberos, /etc/krb5.conf. Copielo al cliente desde KDC de forma segura
   (mediante scp(1), o usando un disquete).

   A continuacion necesitara un fichero /etc/krb5.keytab. Esta es la mayor
   diferencia entre un servidor que proporciona daemons habilitados con
   Kerberos y una estacion de trabajo: el servidor debe tener un fichero
   keytab. Dicho fichero contiene las llaves de equipo del servidor, las
   cuales le permiten a el y al KDC verificar la identidad entre ellos. Deben
   transmitirse al servidor de forma segura ya que la seguridad del servidor
   puede verse comprometida si la llave se hace publica. Por decirlo mas
   claro, transferirla como texto plano a traves de la red (por ejemplo por
   FTP) es una pesima idea.

   Lo normal es que transmita su keytab al servidor mediante el programa
   kadmin. Esto es practico porque tambien debe crear el principal del equipo
   (el KDC que aparece al final de krb5.keytab) usando kadmin.

   Tenga en cuenta que ya debe disponer de un ticket, y que este ticket debe
   poder usar el interfaz kadmin en kadmind.acl. Consulte la seccion
   "administracion remota" en la pagina info de Heimdal (info heimdal), donde
   se exponen los detalles de diseno de las listas de control de acceso. Si
   no quiere habilitar acceso remoto kadmin, puede conectarse de forma segura
   al KDC (por medio de consola local, ssh(1) o telnet(1) Kerberos) y
   administrar en local mediante kadmin -l.

   Despues de instalar el fichero /etc/krb5.conf puede usar kadmin desde el
   servidor Kerberos. add --random-key le permitira anadir el principal del
   equipo servidor, y ext le permitira extraer el principal del equipo
   servidor a su propio keybat. Por ejemplo:

 # kadmin
 kadmin> add --random-key host/myserver.ejemplo.org
 Max ticket life [unlimited]:
 Max renewable life [unlimited]:
 Attributes []:
 kadmin> ext host/miservidor.ejemplo.org
 kadmin> exit

   Tenga en cuenta que ext (contraccion de "extract") almacena la llave
   extraida por defecto en en /etc/krb5.keytab.

   Si no tiene kadmind ejecutandose en KDC (posiblemente por razones de
   seguridad) y por lo tanto carece de acceso remoto a kadmin puede anadir el
   principal de equipo (host/miservidor.EJEMPLO.ORG) directamente en el KDC y
   entonces extraerlo a un fichero temporal (para evitar sobreescribir
   /etc/krb5.keytab en el KDC) mediante algo parecido a esto:

 # kadmin
 kadmin> ext --keytab=/tmp/ejemplo.keytab host/miservidor.ejemplo.org
 kadmin> exit

   Puede entonces copiar de forma segura el keytab al servidor (usando scp o
   un diquete). Asegurese de usar un nombre de keytab diferente para evitar
   sobreescribir el keytab en el KDC.

   Su servidor puede comunicarse con el KDC (gracias a su fichero krb5.conf)
   y puede probar su propia identidad (gracias al fichero krb5.keytab). Ahora
   esta listo para que usted habilite algunos servicios Kerberos. En este
   ejemplo habilitaremos el servicio telnet poniendo una linea como esta en
   su /etc/inetd.conf y reiniciando el servicio inetd(8) con /etc/rc.d/inetd
   restart:

 telnet    stream  tcp     nowait  root    /usr/libexec/telnetd  telnetd -a user

   La parte critica es -a, de autentificacion de usuario. Consulte la pagina
   de manual telnetd(8) para mas informacion.

  14.8.4. Kerberos con un cliente Heimdal

   Configurar una computadora cliente es extremadamente facil. Lo unico que
   necesita es el fichero de configuracion de Kerberos que encontrara en
   /etc/krb5.conf. Simplemente copielo de forma segura a la computadora
   cliente desde el KDC.

   Pruebe su computadora cliente mediante kinit, klist, y kdestroy desde el
   cliente para obtener, mostrar y luego borrar un ticket para el principal
   que creo antes. Deberia poder usar aplicaciones Kerberos para conectarse a
   servidores habilitados con Kerberos, aunque si no funciona y tiene
   problemas al intentar obtener el boleto lo mas probable es que el problema
   este en el servidor y no en el cliente o el KDC.

   Al probar una aplicacion como telnet, trate de usar un "sniffer" de
   paquetes ( como tcpdump(1)) para confirmar que su contrasena no viaja en
   claro por la red. Trate de usar telnet con la opcion -x, que cifra el
   flujo de datos por entero (algo parecido a lo que hace ssh).

   Las aplicaciones clientes Kerberos principales (llamadas tradicionalmente
   kinit, klist, kdestroy y kpasswd) estan incluidas en la instalacion base
   de FreeBSD. Tenga en cuenta que en las versiones de FreeBSD anteriores a
   5.0 reciben los nombres de k5init, k5list, k5destroy, k5passwd y k5stash.

   Tambien se instalan por defecto diversas aplicaciones Kerberos que no
   entran dentro de la categoria de "imprescindibles". Es aqui donde la
   naturaleza "minima" de la instalacion base de Heimdal salta a la palestra:
   telnet es el unico servicio Kerberos habilitado.

   El port Heimdal anade algunas de las aplicaciones cliente que faltan:
   versiones Kerberos de ftp, rsh, rcp, rlogin y algunos otros programas
   menos comunes. El port del MIT tambien contiene una suite completa de
   aplicaciones cliente de Kerberos.

  14.8.5. Ficheros de configuracion de usuario: .k5login y .k5users

   Suele ser habitual que los usuarios de un dominio Kerberos (o
   "principales") tengan su usuario (por ejemplo tillman@EJEMPLO.ORG) mapeado
   a una cuenta de usuario local (por ejemplo un usuario llamado llamado
   tillman). Las aplicaciones cliente como telnet normalmente no requieren un
   nombre de usuario o un principal.

   Es posible que de vez en cuando quiera dar acceso a una una cuenta de
   usuario local a alguien que no tiene un principal Kerberos. Por ejemplo,
   tillman@EJEMPLO.ORG puede necesitar acceso a la cuenta de usuario local
   webdevelopers. Otros principales tal vez necesiten acceso a esas cuentas
   locales.

   Los ficheros .k5login y .k5users, ubicados en el directorio home del
   usuario, pueden usarse de un modo similar a una combinacion potente de
   .hosts y .rhosts. Por ejemplo, si pusiera un fichero .k5login con el
   siguiente contenido

 tillman@example.org
 jdoe@example.org

   en el directorio home del usuario local webdevelopers ambos principales
   listados tendrian acceso a esa cuenta sin requerir una contrasena
   compartida.

   Le recomendamos encarecidamente la lectura de las paginas de manual de
   estas ordenes. Recuerde que la pagina de manual de ksu abarca .k5users.

  14.8.6. Kerberos Sugerencias, trucos y solucion de problemas

     * Tanto si utiliza el port de Heimdal o el Kerberos del MIT asegurese de
       que su variable de entorno PATH liste las versiones de Kerberos de las
       aplicaciones cliente antes que las versiones del sistema.

     * ?Todas las computadoras de su dominio Kerberos tienen la hora
       sincronizada? Si no, la autentificacion puede fallar. Seccion 29.12,
       "NTP" describe como sincronizar los relojes utilizando NTP.

     * MIT y Heimdal conviven bien, con la excepcion de kadmin, protocolo no
       esta estandarizado.

     * Si cambia su nombre de equipo debe cambiar tambien el "apellido" de su
       principal y actualizar su keytab. Esto tambien se aplica a entradas
       especiales en keytab como el principal www/ que usa el
       www/mod_auth_kerb de Apache.

     * Todos los equipos en su dominio Kerberos deben poder resolverse (tanto
       en la forma normal normal como en la inversa) en el DNS (o en
       /etc/hosts como minimo). Los CNAME funcionaran, pero los registros A y
       PTR deben ser correctos y estar en su sitio. El mensaje de error que
       recibira de no hacerlo asi no es muy intuitivo: Kerberos5 refuses
       authentication because Read req failed: Key table entry not found.

     * Algunos sistemas operativos que puede usar como clientes de su KDC no
       activan los permisos para ksu como setuid root. Esto hara que ksu no
       funcione, lo cual es muy seguro pero un tanto molesto. Tenga en cuenta
       que no se debe a un error de KDC.

     * Si desea permitir que un principal tenga un ticket con una validez mas
       larga que el valor por defecto de diez horas en Kerberos del MIT debe
       usar modify_principal en kadmin para cambiar "maxlife" tanto del
       principal en cuestion como del krbtgt del principal. Hecho esto, el
       principal puede utilizar la opcion -l con kinit para solicitar un
       boleto con mas tiempo de vida.

     * Nota:

       Si ejecuta un "sniffer" de paquetes en su KDC para ayudar con la
       resolucion de problemas y ejecuta kinit desde una estacion de trabajo
       puede encontrarse con que su TGT se envia inmediatamente despues de
       ejecutar kinit: incluso antes de que escriba su contrasena La
       explicacion es que el servidor Kerberos transmite tranquilamente un
       TGT (Ticket Granting Ticket) a cualquier peticion no autorizada; de
       todas maneras, cada TGT esta cifrado en una llave derivada de la
       contrasena del usuario. Por tanto, cuando un usuario teclea su
       contrasena no la esta enviando al KDC, se esta usando para descifrar
       el TGT que kinit ya obtuvo. Si el proceso de descifrado termina en un
       ticket valido con una marca de tiempo valida, el usuario tiene
       credenciales Kerberos validas. Estas credenciales incluyen una llave
       de sesion para establecer comunicaciones seguras con el servidor
       Kerberos en el futuro, asi como el TGT en si, que se cifra con la
       llave del propio servidor Kerberos. Esta segunda capa de cifrado es
       invisible para el usuario, pero es lo que permite al servidor Kerberos
       verificar la autenticidad de cada TGT.

     * Si desea utilizar tickets con un tiempo largo de vida (una semana, por
       ejemplo) y esta utilizando OpenSSH para conectarse a la maquina donde
       se almacena su boleto asgurese de que Kerberos TicketCleanup este
       configurado a no en su sshd_config o de lo contrario sus tickets seran
       eliminados cuando termine la sesion.

     * Recuerde que los principales de equipos tambien pueden tener tener un
       tiempo de vida mas largo. Si su principal de usuario tiene un tiempo
       de vida de una semana pero el equipo al que se conecta tiene un tiempo
       de vida de nueve horas, tendra un principal de equipo expirado en su
       cache, y la cache de ticket no funcionara como esperaba.

     * Cuando este configurando un fichero krb5.dict pensando especificamente
       en prevenir el uso de contrasenas defectuosas (la pagina de manual de
       de kadmind trata el tema brevemente), recuerde que solamente se aplica
       a principales que tienen una politica de contrasenas asignada. El
       formato de los ficheros krb5.dict es simple: una cadena de texto por
       linea. Puede serle util crear un enlace simbolico a
       /usr/share/dict/words.

  14.8.7. Diferencias con el port del MIT

   Las diferencias mas grandes entre las instalaciones MIT y Heimdal estan
   relacionadas con kadmin, que tiene un conjunto diferente (pero
   equivalente) de ordenes y utiliza un protocolo diferente. Esto tiene
   implicaciones muy grandes si su KDC es MIT, ya que no podra utilizar el
   programa kadmin de Heimdal para administrar remotamente su KDC (o
   viceversa).

   Las aplicaciones cliente pueden tambien disponer de diferentes opciones de
   linea de ordenes para lograr lo mismo. Le recomendamos seguir las
   instrucciones de la pagina web de Kerberos del MIT
   (http://web.mit.edu/Kerberos/www/). Sea cuidadoso con los parches: el port
   del MIT se instala por defecto en /usr/local/, y las aplicaciones
   "normales" del sistema pueden ser ejecutadas en lugar de las del MIT si su
   variable de entorno PATH lista antes los directorios del sistema.

  Nota:

   Si usa el port del MIT security/krb5 proporcionado por FreeBSD asegurese
   de leer el fichero /usr/local/share/doc/krb5/README.FreeBSD instalado por
   el port si quiere entender por que los login via telnetd y klogind se
   comportan de un modo un tanto extrano. Mas importante aun, corregir la
   conducta de "permisos incorrectos en el fichero cache" requiere que el
   binario login.krb5 se use para la validacion para que pueda cambiar
   correctamente los permisos de propiedad de credenciales reenviadas.

  14.8.8. Mitigacion de limitaciones encontradas en Kerberos

    14.8.8.1. Kerberos es un enfoque "todo o nada"

   Cada servicio habilitado en la red debe modificarse para funcionar con
   Kerberos (o debe ser asegurado contra ataques de red) o de lo contrario
   las credenciales de usuario pueden robarse y reutilizarse. Un ejemplo de
   esto podria ser que Kerberos habilite todos los shells remotos ( via rsh y
   telnet, por ejemplo) pero que no cubra el servidor de correo POP3, que
   envia contrasenas en texto plano.

    14.8.8.2. Kerberos esta pensado para estaciones de trabajo monousuario

   En un entorno multiusuario Kerberos es menos seguro. Esto se debe a que
   almacena los tickets en el directorio /tmp, que puede ser leido por todos
   los usuarios. Si un usuario esta compartiendo una computadora con varias
   personas (esto es, si utiliza un sistema multiusuario) es posible que los
   tickets sean robados (copiados) por otro usuario.

   Esto puede solventarse con la opcion de linea de ordenes -c
   nombre-de-fichero o (mejor aun) la variable de entorno KRB5CCNAME, pero
   raramente se hace. Si almacena los tickets en el directorio home de los
   usuarios y utiliza sin mucha complicacion los permisos de fichero puede
   mitigar este problema.

    14.8.8.3. El KDC es el punto critico de fallo

   Por motivos de diseno el KDC es tan seguro como la base de datos principal
   de contrasenas que contiene. El KDC no debe ejecutar ningun otro servicio
   ejecutandose en el y debe ser fisicamente seguro. El peligro es grande
   debido a que Kerberos almacena todas las contrasenas cifradas con la misma
   llave (la llave "maestra", que a su vez se guarda como un fichero en el
   KDC).

   De todos modos una llave maestra comprometida no es algo tan terrible como
   parece a primera vista. La llave maestra solo se usa para cifrar la base
   de datos Kerberos y como semilla para el generador de numeros aleatorios.
   Mientras sea seguro el acceso a su KDC un atancante no puede hacer
   demasiado con la llave maestra.

   Ademas, si el KDC no esta disponible (quizas debido a un ataque de
   denegacion de servicio o problemas de red) no se podran utilizar los
   servicios de red ya que no se puede efectuar la validacion, lo que hace
   que esta sea una buena forma de lanzar un ataque de denegacion de
   servicio. Este problema puede aliviarse con multiples KDCs (un maestro y
   uno o mas esclavos) y con una implementacion cautelosa de secundarios o
   autentificacion de respaldo (para esto PAM es excelente).

    14.8.8.4. Limitaciones de Kerberos

   Kerberos le permite a usuarios, equipos y servicios validarse entre si,
   pero no dispone de ningun mecanismo para autentificar el KDC a los
   usuarios, equipos o servicios. Esto significa que una version (por
   ejemplo) "troyanizada" kinit puede grabar todos los usuarios y sus
   contrasenas. Puede usar security/tripwire o alguna otra herramienta de
   revision de integridad de sistemas de ficheros para intentar evitar
   problemas como este.

  14.8.9. Recursos y mas informacion

     * Las preguntas frecuentes (FAQ) de Kerberos

     * Designing an Authentication System: a Dialog in Four Scenes

     * RFC 1510, The Kerberos Network Authentication Service (V5)

     * Pagina web de Kerberos del MIT

     * Pagina web de Kerberos Heimdal

14.9. OpenSSL

   Escrito por: Tom Rhodes.

   El conjunto de herramientas OpenSSL es una caracteristica de FreeBSD que
   muchos usuarios pasan por alto. OpenSSL ofrece una capa de cifrada de
   transporte sobre la capa normal de comunicacion, permitiendo la
   combinacion con con muchas aplicaciones y servicios de red.

   Algunos usos de OpenSSL son la validacion cifrada de clientes de correo,
   las transacciones basadas en web como pagos con tarjetas de credito, etc.
   Muchos ports, como www/apache13-ssl y mail/sylpheed-claws ofrecen soporte
   de compilacion para OpenSSL.

  Nota:

   En la mayoria de los casos la coleccion de ports tratara de compilar el
   port security/openssl a menos que la variable de make WITH_OPENSSL_BASE
   sea puesta explicitamente a "yes".

   La version de OpenSSL incluida en FreeBSD soporta los protocolos de
   seguridad de red Secure Sockets Layer v2/v3 (SSLv2/SSLv3) y Transport
   Layer Security v1 (TLSv1) y puede utilizarse como biblioteca criptografica
   general.

  Nota:

   OpenSSL soporta el algoritmo IDEA pero estaa deshabilitado por defecto
   debido a patentes en vigor en los Estados Unidos. Si quiere usarlo debe
   revisar la licencia, y si las restricciones le parecen aceptables active
   la variable MAKE_IDEA en make.conf.

   Uno de los usos mas comunes de OpenSSL es ofrecer certificados para usar
   con aplicaciones de software. Estos certificados aseguran que las
   credenciales de la compania o individuo son validos y no son fraudulentos.
   Si el certificado en cuestion no ha sido verificado por uno de las
   diversas "autoridades certificadoras" o CA, suele generarse una
   advertencia al respecto. Una autoridad de certificados es una compania,
   como VeriSign, que firma certificados para validar credenciales de
   individuos o companias. Este proceso tiene un costo asociado y no es un
   requisito imprescindible para usar certificados, aunque puede darle un
   poco de tranquilidad a los usuarios mas paranoicos.

  14.9.1. Generacion de certificados

   Para generar un certificado ejecute lo siguiente:

 # openssl req -new -nodes -out req.pem -keyout cert.pem
 Generating a 1024 bit RSA private key
 ................++++++
 .......................................++++++
 writing new private key to 'cert.pem'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:US
 State or Province Name (full name) [Some-State]:PA
 Locality Name (eg, city) []:Pittsburgh
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mi compania
 Organizational Unit Name (eg, section) []:Administrador de sistemas
 Common Name (eg, YOUR name) []:localhost.ejemplo.org
 Email Address []:trhodes@FreeBSD.org

 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:UNA CONTRASENA
 An optional company name []:Otro nombre

   Tenga en cuenta que la respuesta directamente despues de "prompt" "Common
   Name" muestra un nombre de dominio. Este "prompt" requiere que se
   introduzca un nombre de servidor para usarlo en la verificacion; si
   escribe cualquier otra cosa producira un certificado invalido. Otras
   opciones, por ejemplo el tiempo de expiracion, alternan algoritmos de
   cifrado, etc. Puede ver una lista completa en la pagina de manual de
   openssl(1).

   Deberia tener dos ficheros en el directorio donde ha ejecutado la orden
   anterior. La peticion de certificado, req.pem, es lo que debe enviar a una
   autoridad certificadora para que valide las credenciales que introdujo;
   firmara la peticion y le devolvera el certificado. El segundo fichero es
   cert.pem y es la llave privada para el certificado, que debe proteger a
   toda costa; si cae en malas manos podri usarse para suplantarle a usted o
   a sus servidores.

   Si no necesita la firma de una CA puede crear y firmar usted mismo su
   certificado. Primero, genere la llave RSA:

 # openssl dsaparam -rand -genkey -out myRSA.key 1024

   A continuacion genere la llave CA:

 # openssl gendsa -des3 -out myca.key myRSA.key

   Utilice esta llave para crear el certificado:

 # openssl req -new -x509 -days 365 -key myca.key -out new.crt

   Deberin aparecer dos nuevos ficheros en su directorio: un fichero de firma
   de autoridad de certificados (myca.key) y el certificado en si, new.crt.
   Deben ubicarse en un directorio, que se recomienda que sea /etc, que es
   legible solo para root. Para terminar, es recomendable asignar permisos
   0700 para el fichero con chmod.

  14.9.2. Uso de certificados; un ejemplo

   ?Que pueden hacer estos ficheros? Cifrar conexiones al MTA Sendmail es un
   buen sitio para usarlos. De este modo eliminara el uso de validacion
   mediante texto en claro para los usuarios que envian correo a traves del
   MTA local.

  Nota:

   No es el mejor uso en el mundo, ya que algunos MUAs enviaran al usuario un
   mensaje de error si no tiene instalados localmente los certificados.
   Consulte la documentacion para mas datos sobre la instalacion de
   certificados.

   Debe anadir las siguientes lineas en su fichero local .mc:

 dnl SSL Options
 define(`confCACERT_PATH',`/etc/certs')dnl
 define(`confCACERT',`/etc/certs/new.crt')dnl
 define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
 define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
 define(`confTLS_SRV_OPTIONS', `V')dnl

   /etc/certs/ es el directorio destinado a almacenamiento de los ficheros de
   certificado y llave en local. El ultimo requisito es una reconstruccion
   del fichero .cf local. Solo tiene que teclear make install en el
   directorio /etc/mail. A continuacion ejecute un make restart, que deberia
   reiniciar el daemon Sendmail.

   Si todo fue bien no habra mensajes de error en el fichero /var/log/maillog
   y Sendmail aparecera en la lista de procesos.

   Puede probarlo todo de una forma muy sencilla; conectese al servidor de
   correo mediante telnet(1):

 # telnet ejemplo.com 25
 Trying 192.0.34.166...
 Connected to ejemplo.com.
 Escape character is '^]'.
 220 ejemplo.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
 ehlo ejemplo.com
 250-ejemplo.com Hello ejemplo.com [192.0.34.166], pleased to meet you
 250-ENHANCEDSTATUSCODES
 250-PIPELINING
 250-8BITMIME
 250-SIZE
 250-DSN
 250-ETRN
 250-AUTH LOGIN PLAIN
 250-STARTTLS
 250-DELIVERBY
 250 HELP
 quit
 221 2.0.0 ejemplo.com closing connection
 Connection closed by foreign host.

   Si la linea "STARTTLS" aparece en la salida, todo esta funcionando
   correctamente.

14.10. VPN sobre IPsec

   Escrito por Nik Clayton.

   Creacion de una VPN entre dos redes, a traves de Internet, mediante
   puertas de enlace ("gateways") FreeBSD.

  14.10.1. Que es IPsec

   Escrito por Hiten M. Pandya.

   Esta seccion le guiara a traves del proceso de configuracion de IPsec, y
   de su uso en un entorno consistente en maquinas FreeBSD y
   Microsoft(R) Windows(R) 2000/XP, para hacer que se comuniquen de manera
   segura. Para configurar IPsec es necesario que este familiarizado con los
   conceptos de construccion de un kernel personalizado (consulte el
   Capitulo 8, Configuracion del kernel de FreeBSD).

   IPsec es un protocolo que esta sobre la capa del protocolo de Internet
   (IP). Le permite a dos o mas equipos comunicarse de forma segura (de ahi
   el nombre). La "pila de red" IPsec de FreeBSD se basa en la implementacion
   KAME, que incluye soporte para las dos familias de protocolos, IPv4 e
   IPv6.

  Nota:

   FreeBSD 5.X contiene una pila IPsec "acelerada por hardware", conocida
   como "Fast IPsec", que fue obtenida de OpenBSD. Emplea hardware
   criptografico (cuando es posible) a traves del subsistema crypto(4) para
   optimizar el rendimiento de IPsec. Este subsistema es nuevo, y no soporta
   todas las opciones disponibles en la version KAME de IPsec. Para poder
   habilitar IPsec acelerado por hardware debe anadir las siguientes opciones
   al fichero de configuracion de su kernel:

 options   FAST_IPSEC  # new IPsec (cannot define w/ IPSEC)
        

   Tenga en cuenta que no es posible utilizar el subsistema "Fast IPsec" y la
   implementacion KAME de IPsec en la misma computadora. Consulte la pagina
   de manual fast_ipsec(4) para mas informacion.

   IPsec consta de dos sub-protocolos:

     * Encapsulated Security Payload (ESP), que protege los datos del paquete
       IP de interferencias de terceros, cifrando el contenido utilizando
       algoritmos de criptografia simetrica (como Blowfish, 3DES).

     * Authentication Header (AH), que protege la cabecera del paquete IP de
       interferencias de terceros asi como contra la falsificacion
       ("spoofing"), calculando una suma de comprobacion criptografica y
       aplicando a los campos de cabecera IP una funcion hash segura. Detras
       de todo esto va una cabecera adicional que contiene el hash para
       permitir la validacion de la informacion que contiene el paquete.

   ESP y AH pueden utilizarse conjunta o separadamente, dependiendo del
   entorno.

   IPsec puede utilizarse para cifrar directamente el trafico entre dos
   equipos (conocido como modo de transporte) o para construir "tuneles
   virtuales" entre dos subredes, que pueden usarse para comunicacion segura
   entre dos redes corporativas (conocido como modo de tunel). Este ultimo es
   muy conocido como una red privada virtual (Virtual Private Network, o
   VPN). ipsec(4) contiene informacion detallada sobre el subsistema IPsec de
   FreeBSD.

   Si quiere andir soporte IPsec a su kernel debe incluir las siguientes
   opciones al fichero de configuracion de su kernel:

 options   IPSEC        #IP security
 options   IPSEC_ESP    #IP security (crypto; define w/ IPSEC)
      

   Si quiere soporte para la depuracion de errores no olvide la siguiente
   opcion:

 options   IPSEC_DEBUG  #debug for IP security
      

  14.10.2. El Problema

   No existe un estandar para lo que constituye una VPN. Las VPN pueden
   implementarse utilizando numerosas tecnologias diferentes, cada una de las
   cuales tiene sus pros y sus contras. Esta seccion presenta un escenario, y
   las estrategias usadas para implementar una VPN para este escenario.

  14.10.3. El escenario: dos redes, conectadas por Internet, que queremos que se
  comporten como una sola

   Este es el punto de partida:

     * Usted tiene al menos dos sitios

     * Ambos sitios utilizan IP internamente

     * Ambos sitios estan conectados a Internet, a traves de una puerta de
       enlace FreeBSD.

     * La puerta de enlace de cada red tiene al menos una direccion IP
       publica.

     * Las direcciones internas de las dos redes pueden ser direcciones IP
       publicas o privadas, no importa. Puede ejecutar NAT en la maquina que
       hace de puerta de enlace si es necesario.

     * Las direcciones IP internas de las dos redes no colisionan. Aunque
       espero que sea teoricamente posible utilizar una combinacion de
       tecnologia VPN y NAT para hacer funcionar todo esto sospecho que
       configurarlo seria una pesadilla.

   Si lo que intenta es conectar dos redes y ambas usan el mismo rango de
   direcciones IP privadas (por ejemplo las dos usan 192.168.1.x)deberia
   renumerar una de las dos redes.

   La topologia de red se pareceria a esto:

   Observe las dos direcciones IP publicas. Usare letras para referirme a
   ellas en el resto de este articulo. El cualquier lugar que vea esas letras
   en este articulo reemplacelas con su propia direccion IP publica. Observe
   tambien que internamente las dos maquinas que hacen de puerta de enlace
   tienen la direccion IP .1, y que las dos redes tienen direcciones IP
   privadas diferentes (192.168.1.x y 192.168.2.x respectivamente). Todas las
   maquinas de las redes privadas estan configuradas para utilizar la maquina
   .1 como su puerta de enlace por defecto.

   La intencion es que, desde el punto de vista de la red, cada red debe ver
   las maquinas en la otra red como si estuvieran directamente conectadas al
   mismo router (aunque aunque sea un router ligeramente lento con una
   tendencia ocasional a tirar paquetes).

   Esto significa que (por ejemplo), la maquina 192.168.1.20 debe ser capaz
   de ejecutar

 ping 192.168.2.34

   y recibir de forma transparente una respuesta. Las maquinas Windows(R)
   deben ser capaces de ver las maquinas de la otra red, acceder a sus
   ficheros compartidos, etc, exactamente igual que cuando acceden a las
   maquinas de la red local.

   Y todo debe hacerse de forma segura. Esto significa que el trafico entre
   las dos redes tiene que ser cifrado.

   La creacion de una VPN entre estas dos redes es un proceso que requiere
   varios pasos. Las etapas son estas:

    1. Crear un enlace de red "virtual" entre las dos redes, a traves de
       Internet. Probarlo usando herramientas como ping(8) para asegurarse de
       que funcione.

    2. Aplicar politicas de seguridad para asegurarse de que el trafico entre
       las dos redes sea cifrado y descifrado de forma transparente.
       Comprobarlo mediante herramientas como tcpdump(1) para asegurarse de
       que el trafico este siendo efectivamente cifrado.

    3. Configurar software adicional en las puertas de enlace FreeBSD para
       permitir a las maquinas Windows(R) verse entre ellas a traves de la
       VPN.

    14.10.3.1. Paso 1: Creacion y prueba de un enlace de red "virtual"

   Suponga que esta en la puerta de enlace de la red red #1 (con direccion IP
   publica A.B.C.D, direccion IP privada 192.168.1.1), y ejecuta ping
   192.168.2.1, que es la direccion privada de la maquina con direccion IP
   W.X.Y.Z. ?Que hace falta para esto?

    1. La puerta de enlace necesita saber como alcanzar a 192.168.2.1. En
       otras palabras, necesita tener una ruta hasta 192.168.2.1.

    2. Las direcciones IP privadas, como las que estan en el rango 192.168.x
       no deberian aparecer en Internet. Por eso, cada paquete que mande a
       192.168.2.1 necesitara encerrarse dentro de otro paquete. Este paquete
       debe tener todas las caracteristicas de haber sido enviado desde
       A.B.C.D, y tendra que ser enviado a W.X.Y.Z. Este proceso recibe el
       nombre de encapsulado.

    3. Una vez que este paquete llega a W.X.Y.Z necesitara ser
       "desencapsulado", y entregado a 192.168.2.1.

   Puede verlo como si necesitara un "tunel" entre las dos redes. Las dos
   "bocas del tunel" son las direcciones IP A.B.C.D y W.X.Y.Z, y debe hacer
   que el tunel sepa cuales seran las direcciones IP privadas que tendran
   permitido el paso a traves de el. El tunel se usa para transferir trafico
   con direcciones IP privadas a traves de la Internet publica.

   Este tunel se crea mediante la interfaz generica, o dispositivo gif en
   FreeBSD. Como puede imaginarse la interfaz gif de cada puerta de enlace
   debe configurarse con cuatro direcciones IP: dos para las direcciones IP
   publicas, y dos para las direcciones IP privadas.

   El soporte para el dispositivo gif debe compilarse en el kernel de FreeBSD
   en ambas maquinas anadiendo la linea

 device gif

   a los ficheros de configuracion del kernel de ambas maquinas, compilarlo,
   instalarlo y reiniciar.

   La configuracion del tunel es un proceso que consta de dos partes. Primero
   se le debe decir al tunel cuales son las direcciones IP exteriores (o
   publicas) mediante gifconfig(8). Despues configure las direcciones IP con
   ifconfig(8).

  Nota:

   En FreeBSD 5.X las funciones de gifconfig(8) se han incluido en
   ifconfig(8).

   En la puerta de enlace de la red #1 debe ejecutar las siguientes dos
   ordenes para configurar el tunel.

 gifconfig gif0 A.B.C.D W.X.Y.Z
 ifconfig gif0 inet 192.168.1.1 192.168.2.1 netmask 0xffffffff
      

   En la otra puerta de enlace ejecute las mismas ordenes, pero con el orden
   las direcciones IP invertido.

 gifconfig gif0 W.X.Y.Z A.B.C.D
 ifconfig gif0 inet 192.168.2.1 192.168.1.1 netmask 0xffffffff
      

   Ahora ejecute:

 gifconfig gif0

   y podra ver la configuracion. Por ejemplo, en la puerta de enlace de la
   red #1 veria algo parecido a esto:

 # gifconfig gif0
 gif0: flags=8011<UP,POINTTOPOINT,MULTICAST> mtu 1280
 inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff
 physical address inet A.B.C.D --> W.X.Y.Z
      

   Como puede ver se ha creado un tunel entre las direcciones fisicas A.B.C.D
   y W.X.Y.Z, y el trafico que puede pasar a traves del tunel es entre
   192.168.1.1 y 192.168.2.1.

   Esto tambien habra agregado una entrada en la tabla de rutas de ambas
   maquinas, que puede examinar con netstat -rn. Esta salida es de la puerta
   de enlace de la red #1.

 # netstat -rn
 Routing tables

 Internet:
 Destination      Gateway       Flags    Refs    Use    Netif  Expire
 ...
 192.168.2.1      192.168.1.1   UH        0        0    gif0
 ...
      

   Como el valor de "Flags" lo indica, esta es una ruta de equipo, lo que
   significa que cada puerta de enlace sabe como alcanzar la otra puerta de
   enlace, pero no saben como llegar al resto de sus respectivas redes. Ese
   problema se solucionara en breve.

   Es posible que disponga de un cortafuegos en ambas maquinas, por lo que
   tendra que buscar la forma de que el trafico de la VPN pueda entrar y
   salir limpiamente. Puede permitir todo el trafico de ambas redes, o puede
   que quiera incluir reglas en el cortafuegos para que protejan ambos
   extremos de la VPN uno del otro.

   Las pruebas se simplifican enormemente si configura el cortafuegos para
   permitir todo el trafico a traves de la VPN. Siempre puede ajustar las
   cosas despues. Si utiliza ipfw(8) en las puertas de enlace una orden
   similar a

 ipfw add 1 allow ip from any to any via gif0

   permitira todo el trafico entre los dos extremos de la VPN, sin afectar al
   resto de reglas del cortafuegos. Obviamente tendra que ejecutar esta orden
   en ambas puertas de enlace.

   Esto es suficiente para permitir a cada puerta de enlace hacer un ping
   entre ellas. En 192.168.1.1 deberi poder ejecutar

 ping 192.168.2.1

   y obtener una respuesta; es obvio que deberia poder hacer los mismo en la
   otra puerte de enlace.

   Aun no podra acceder a las maquinas internas de las redes. El problema
   esta en el encaminamiento: aunque las puertas de enlace saben como
   alcanzarse mutuamente no saben como llegar a la red que hay detras de la
   otra.

   Para resolver este problema debe anadir una ruta estatica en cada puerta
   de enlace. La orden en la primera puerta de enlace podria ser:

 route add 192.168.2.0 192.168.2.1 netmask 0xffffff00
      

   Esto significa "Para alcanzar los equipos en la red 192.168.2.0, envia los
   paquetes al equipo 192.168.2.1". Necesitara ejecutar una orden similar en
   la otra puerta de enlace, pero obviamente con las direcciones 192.168.1.x.

   El trafico IP de equipos en una red no sera capaz de alcanzar equipos en
   la otra red.

   Ya tiene dos tercios de una VPN, puesto que ya es "virtual" y es una
   "red". Todavia no es privada. Puede comprobarlo con ping(8) y tcpdump(1).
   Abra una sesion en la puerta de enlace y ejecute

 tcpdump dst host 192.168.2.1

   En otra sesion en el mismo equipo ejecute

 ping 192.168.2.1

   Vera algo muy parecido a esto:

 16:10:24.018080 192.168.1.1 > 192.168.2.1: icmp: echo request
 16:10:24.018109 192.168.1.1 > 192.168.2.1: icmp: echo reply
 16:10:25.018814 192.168.1.1 > 192.168.2.1: icmp: echo request
 16:10:25.018847 192.168.1.1 > 192.168.2.1: icmp: echo reply
 16:10:26.028896 192.168.1.1 > 192.168.2.1: icmp: echo request
 16:10:26.029112 192.168.1.1 > 192.168.2.1: icmp: echo reply
      

   Como puede ver los mensajes ICMP van y vienen sin cifrar. Si usa el
   parametro -s en tcpdump(1) para tomar mas bytes de datos de estos paquetes
   vera mas informacion.

   Obviamente esto es inaceptable. La siguiente seccion explicara como
   asegurar el enlace entre las dos redes para que todo el trafico se cifre
   automaticamente.

   Sumario:
     * Configure ambos kernel con "pseudo-device gif".

     * Edite /etc/rc.conf en la puerta de enlace #1 y anada las siguientes
       lineas (reemplazando las direcciones IP segun sea necesario).

 gifconfig_gif0="A.B.C.D W.X.Y.Z"
 ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff"
 static_routes="vpn"
 route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"
          

     * Edite la configuracion de su cortafuegos (/etc/rc.firewall, o lo que
       corresponda) en ambos equipos y anada

 ipfw add 1 allow ip from any to any via gif0

     * Haga los cambios oportunos en el /etc/rc.conf de la puerta de enlace
       #2, invirtiendo el orden de las direcciones IP.

    14.10.3.2. Paso 2: Asegurar el enlace

   Para asegurar el enlace usaremos IPsec. IPsec ofrece un mecanismo para que
   dos equipos coincidan en una llave de cifrado, y usar esta llave para
   cifrar los datos entre los dos equipos.

   Existen dos areas de configuracion a tener en cuenta:

    1. Debe existir un mecanismo para que los dos equipos se pongan de
       acuerdo en el mecanismo de cifrado que van a utilizar. Una vez que los
       dos equipos se han puesto de acuerdo dice que existe una "asociacion
       de seguridad" entre ellos.

    2. Debe existir un mecanismo para especificar que trafico debe ser
       cifrado. Obviamente, usted no querra cifrar todo su trafico saliente:
       solo querra cifrar el trafico que es parte de la VPN. Las reglas con
       las que determinara que trafico sera cifrado se llaman "politicas de
       seguridad".

   Tanto las asociaciones de seguridad como las politicas de seguridad son
   responsabilidad del kernel, pero pueden ser modificadas desde el espacio
   de usuario. Antes de poder hacerlo, tendra que configurar el kernel para
   que incluya IPsec y el protocolo ESP (Encapsulated Security Payload).
   Incluya en el fichero de configuracion de su kernel lo siguiente:

 options IPSEC
 options IPSEC_ESP
       

   Recompile y resintale su kernel y reinicie. Como se dijo anteriormente,
   tendra que hacer lo mismo en el kernel de las dos puertas de enlace.

   Tiene dos opciones cuando se trata de configurar asociaciones de
   seguridad. Puede configurarlas a mano en los dos equipos, lo que significa
   elegir el algoritmo de cifrado, las llaves de cifrado, etc, o puede
   utilizar alguno de los daemons que implementan el protocolo de intercambio
   de llaves de Internet (IKE, Internet Key Exchange).

   Le recomiendo la segunda opcion. Aparte de otras consideraciones es mas
   facil de configurar.

   La edicion y despliegue se efectua con setkey(8). Todo esto se entiende
   mejor con una analogia. setkey es a las tablas de politicas de seguridad
   del kernel lo que route(8) es a las tablas de rutas del kernel. Tambien
   puede usar setkey ver las asociaciones de seguridad en vigor, siguiendo
   con la analogia, igual que puede usar netstat -r.

   Existen numerosos daemons que pueden encargarse de la gestion de
   asociaciones de seguridad en FreeBSD. En este texto se muestra como usar
   uno de ellos, racoon (que puede instalar desde security/racoon en la
   coleccion de ports de FreeBSD.

   El software security/racoon debe ejecutarse en las dos puertas de enlace.
   En cada equipo debe configurar la direccion IP del otro extremo de la VPN
   y una llave secreta (que usted puede y debe elegir, y debe ser la misma en
   ambas puertas de enlace).

   Los dos daemons entran en contacto uno con otro, y confirman que son
   quienes dicen ser (utilizando la llave secreta que usted configuro). Los
   daemons generan una nueva llave secreta, y la utilizan para cifrar el
   trafico que discurre a traves de la VPN. Periodicamente cambian esta
   llave, para que incluso si un atacante comprometiera una de las llaves (lo
   cual es teoricamente cercano a imposible) no le serviriia de mucho: para
   cuando el atacante haya "crackeado" la llave los daemons ya habran
   escogido una nueva.

   El fichero de configuracion de racoon esta en ${PREFIX}/etc/racoon. No
   deberia tener que hacer demasiados cambios a ese fichero. El otro
   componente de la configuracion de racoon (que si tendra que modificar) es
   la "llave pre-compartida".

   La configuracion por defecto de racoon espera encontrarla en
   ${PREFIX}/etc/racoon/psk.txt. Es importante saber que la llave
   precompartida no es la llave que se utilizara para cifrar el trafico a
   traves del enlace VPN; solamente es una muestra que permite a los daemons
   que administran las llaves confiar el uno en el otro.

   psk.txt contiene una linea por cada sitio remoto con el que este tratando.
   En nuestro ejemplo, donde existen dos sitios, cada fichero psk.txt
   contendra una linea (porque cada extremo de la VPN solo esta tratando con
   un sitio en el otro extremo).

   En la puerta de enlace #1 esta linea deberia parecerse a esta:

 W.X.Y.Z            secreto

   Esto es, la direccion IP publica del extremo remoto, un espacio en blanco,
   y una cadena de texto que es el secreto en si. en el extremo remoto,
   espacio en blanco, y un texto de cadena que proporcina el secreto.
   Obviamente, no debe utilizar "secret" como su llave; aplique aqui las
   reglas y recomendaciones habituales para la eleccion de contrasenas.

   En la puerta de enlace #2 la linea se pareceria a esta

 A.B.C.D            secreto

   Esto es, la direccion IP publica del extremo remoto, y la misma llave
   secreta. psk.txt debe tener modo 0600 (es decir, modo de solo
   lectura/escritura para root) antes de que ejecute racoon.

   Debe ejecutar racoon en ambas puertas de enlace. Tambien tendra que anadir
   algunas reglas a su cortafuegos para permitir el trafico IKE, que se
   transporta sobre UDP al puerto ISAKMP (Internet Security Association Key
   Management Protocol). Esto debe estar al principio de las reglas de su
   cortafuegos.

 ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
 ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
       

   Una vez que ejecute racoon puede tratar de hacer un ping a una puerta de
   enlace desde la otra. La conexion todavia no esta cifrada porque aun no se
   han creado las asociaciones de seguridad entre los dos equipos: esto puede
   llevar un poco de tiempo; es posible que advierta un pequeno retraso antes
   de los ping empiecen responder.

   Una vez creadas las asociaciones de seguridad puede verlas utilizando
   setkey(8). Ejecute

 setkey -D

   en cualquiera de los equipos para comprobar la informacion de la
   asociacion de seguridad.

   Ya esta resuelta la mitad del problema. La otra mitad es configurar sus
   politicas de seguridad.

   Queremos crear una politica de seguridad sensata, asi que vamos a revisar
   lo que tenemos configurado hasta el momento. Esta revision abarca ambos
   extremos del enlace.

   Cada paquete IP que usted manda tiene una cabecera que contiene datos
   acerca del paquete. La cabecera incluye la direccion IP de destino y del
   origen. Como ya sabemos, las direcciones IP privadas como el rango
   192.168.x.y no deberian aparezcan en Internet. Dado que es a traves de
   Internet por donde los queremos transmitir los debemos encapsular dentro
   de otro paquete. Este paquete debe contener tanto la direccion IP de
   destino y origen publicas sustituidas por las direcciones privadas.

   Asi que si su paquete saliente empezo pareciendose a este:

   tras el encapsulado se parecera bastante a este:

   El dispositivo gif se encarga del encapsulado. Como puede ver el paquete
   tiene una direccion IP real en el exterior, y nuestro paquete original ha
   sido envuelto como dato dentro del paquete que enviaremos a traves de
   Internet.

   Obviamente, queremos que todo el trafico entre las VPN vaya cifrado.
   Pongamos esto ultimo en palabras para comprenderlo mejor:

   "Si un paquete sale desde A.B.C.D, y tiene como destino W.X.Y.Z, cifralo
   utilizando las asociaciones de seguridad necesarias."

   "Si un paquete llega desde W.X.Y.Z, y tiene como destino A.B.C.D,
   descifralo utilizando las asociaciones de seguridad necesarias."

   Este planteamiento se aproxima bastante, pero no es exactamente lo que
   queremos hacer. Si lo hiciera asi todo el trafico desde y hacia W.X.Y.Z,
   incluso el trafico que no forma parte de la VPN, sera cifrado; esto no es
   lo que queremos. La politica correcta es la siguiente:

   "Si un paquete sale desde A.B.C.D, y esta encapsulando a otro paquete, y
   tiene como destino W.X.Y.Z, cifralo utilizando las asociaciones de
   seguridad necesarias."

   "Si un paquete llega desde W.X.Y.Z, y esta encapsulando a otro paquete, y
   tiene como destino A.B.C.D, descifralo utilizando las asociaciones de
   seguridad necesarias."

   Un cambio sutil, pero necesario.

   Las politicas de seguridad tambien se imponen utilizando setkey(8).
   setkey(8) proporciona un lenguaje de configuracion para definir la
   politica. Puede introducir las instrucciones de configuracion a traves de
   la entrada estandar (stdin), o puede usar la opcion -f para especificar un
   fichero que contenga las instrucciones de configuracion.

   La configuracion en la puerta de enlace #1 (que tiene la direccion IP
   publica A.B.C.D) para forzar que todo el trafico saliente hacia W.X.Y.Z
   vaya cifrado es:

 spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;
       

   Ponga estas ordenes en un fichero (por ejemplo /etc/ipsec.conf) y ejecute

 # setkey -f /etc/ipsec.conf

   spdadd le dice a setkey(8) que queremos anadir una regla a la base de
   datos de politicas de seguridad. El resto de la linea especifica que
   paquetes se ajustaran a esta politica. A.B.C.D/32 y W.X.Y.Z/32 son las
   direcciones IP y mascaras de red que identifican la red o equipos a los
   que se aplicara esta politica. En nuestro caso queremos aplicarla al
   trafico entre estos dos equipos. -P out dice que esta politica se aplica a
   paquetes salientes, e ipsec hace que el paquete sea asegurado.

   La segunda linea especifica como sera cifrado este paquete. esp es el
   protocolo que se utilizara, mientras que tunnel indica que el paquete sera
   despues encapsulado en un paquete IPsec. El uso repetido de A.B.C.D y
   W.X.Y.Z se utiliza para seleccionar la asociacion de seguridad a usar, y
   por ultimo require exige que los paquetes deben cifrarse si concuerdan con
   esta regla.

   Esta regla solo concuerda con paquetes salientes. Necesitara una regla
   similar para los paquetes entrantes.

 spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;

   Observe el in en lugar del out en este caso, y la inversion necesaria de
   las direcciones IP.

   La otra puerta de enlace (que tiene la direccion IP publica W.X.Y.Z)
   necesitara reglas similares.

 spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;
 spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;

   Finalmente, necesita anadir reglas a su cortafuegos para permitir la
   circulacion de paquetes ESP e IPENCAP de ida y vuelta. Tendra que anadir
   reglas como estas a ambos equipos.

 ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
 ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
 ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
 ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
       

   Debido a que las reglas son simetricas puede utilizar las mismas reglas en
   ambas puertas de enlace.

   Los paquetes salientes tendran ahora este aspecto:

   Cuando los paquetes llegan al otro extremo de la VPN seran descifrados
   (utilizando las asociaciones de seguridad que han sido negociadas por
   racoon). Despues entraran al interfaz gif, que desenvuelve la segunda
   capa, hasta que nos quedamos con paquete ma interno, que puede entonces
   viajar a la red interna.

   Puede revisar la seguridad utilizando la misma prueba de ping(8) anterior.
   Primero, inicie una sesion en la puerta de enlace A.B.C.D, y ejecute:

 tcpdump dst host 192.168.2.1

   En otra sesion en la misma maquina ejecute

 ping 192.168.2.1

   Deberia ver algo similar a lo siguiente:

 XXX tcpdump output

   ahora, como puede ver, tcpdump(1) muestra los paquetes ESP. Si trata de
   examinarlos con la opcion -s vera basura (aparentemente), debido al
   cifrado.

   Felicidades. Acaba de configurar una VPN entre dos sitios remotos.

   Sumario
     * Configure ambos kernel con:

 options IPSEC
 options IPSEC_ESP
          

     * Instale security/racoon. Edite ${PREFIX}/etc/racoon/psk.txt en ambas
       puertas de enlace anadiendo una entrada para la direccion IP del
       equipo remoto y una llave secreta que ambos conozcan. Asegurese de que
       este fichero este en modo 0600.

     * Anada las siguientes lineas a /etc/rc.conf en ambos equipos:

 ipsec_enable="YES"
 ipsec_file="/etc/ipsec.conf"
          

     * Cree en ambos equipos un /etc/ipsec.conf que contenga las lineas
       spdadd necesarias. En la puerta de enlace #1 seria:

 spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec
   esp/tunnel/A.B.C.D-W.X.Y.Z/require;
 spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec
   esp/tunnel/W.X.Y.Z-A.B.C.D/require;

       En la puerta de enlace #2 seria:

 spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec
   esp/tunnel/W.X.Y.Z-A.B.C.D/require;
 spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec
   esp/tunnel/A.B.C.D-W.X.Y.Z/require;

     * Anada a su(s) cortafuegos las reglas necesarias para que permita(n) el
       paso de trafico IKE, ESP e IPENCAP en ambos equipos:

 ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
 ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
 ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
 ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
 ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
 ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
          

   Los dos pasos previos deben bastar para levantar la VPN. Las maquinas en
   cada red sean capaces de dirigirse una a otra utilizando direcciones IP, y
   todo el trafico a traves del enlace sera cifrado de forma automatica y
   segura.

14.11. OpenSSH

   Escrito por Chern Lee.

   OpenSSH es un conjunto de herramientas de conectividad que se usan para
   acceder a sistemas remotos de forma segura. Puede usarse como sustituto
   directo de rlogin, rsh, rcp y telnet. Ademas cualquier otra conexion
   TCP/IP puede reenviarse o enviarse a traves de un tunel a traves de SSH.
   OpenSSH cifra todo el trafico para eliminar de forma efectiva el
   espionaje, el secuestro de conexiones, y otros ataques en la capa de red.

   OpenSSH esta a cargo del proyecto OpenBSD, y esta basado en SSH v1.2.12,
   con todos los errores recientes corregidos y todas las actualizaciones
   correspondientes. Es compatible con los protocolos SSH 1 y 2. OpenSSH
   forma parte del sistema base desde FreeBSD 4.0.

  14.11.1. Ventajas de utilizar OpenSSH

   Normalmente, al utilizar telnet(1) o rlogin(1) los datos se envian a
   traves de la red en limpio, es decir, sin cifrar. Cualquier "sniffer" de
   red entre el cliente y el servidor puede robar la informacion de
   usuario/contrasena o los datos transferidos durante su sesion. OpenSSH
   ofrece diversos metodos de validacion y cifrado para evitar que sucedan
   estas cosas.

  14.11.2. Habilitar sshd

   El daemon sshd esta habilitado por defecto FreeBSD 4.X y puede elegir
   habilitarlo o no durante la instalacion en FreeBSD 5.X. Si quiere saber si
   esta habilitado revise si la siguiente linea esta en rc.conf:

 sshd_enable="YES"

   Esta linea cargara sshd(8), el programa daemon de OpenSSH, en el arranque
   de su sistema. Puede ejecutar el daemon sshd tecleando sshd en la linea de
   ordenes.

  14.11.3. Cliente SSH

   ssh(1) funciona de manera similar a rlogin(1).

 # ssh user@example.com
 Host key not found from the list of known hosts.
 Are you sure you want to continue connecting (yes/no)? yes
 Host 'ejemplo.com' added to the list of known hosts.
 usuario@ejemplo.com's password: *******

   El login continuara como lo haria si fuera una sesion de rlogin o telnet.
   SSH utiliza un sistema de huellas de llaves para verificar la autenticidad
   del servidor cuando el cliente se conecta. Se le pide al usuario que
   introduzca yes solamente la primera vez que se conecta. Todos los intentos
   futuros de login se verifican contra la huella de la llave guardada la
   primera vez. El cliente SSH le alertara si la huella guardada difiere de
   la huella recibida en futuros intentos de acceso al sistema. Las huellas
   se guardan en ~/.ssh/known_hosts, y en ~/.ssh/known_hosts2 las huellas SSH
   v2.

   Por defecto las versiones recientes de los servidores OpenSSH solamente
   aceptan conexiones SSH v2. El cliente utilizara la version 2 si es posible
   y pasara como respaldo a la version 1. El cliente puede tambien ser
   obligado a utilizar una u otra pasandole -1 o -2, respectivamente para la
   version 1 y la version 2. Se mantiene la compatibilidad del cliente con la
   version 1 para mantener la compatibilidad con versiones antiguas.

  14.11.4. Copia segura

   scp(1) funciona de manera muy similar a rcp(1); copia un fichero desde o
   hacia un sistema remoto, con la diferencia de que lo hace de una forma
   segura.

 #  scp usuario@ejemplo.com:/COPYRIGHT COPYRIGHT
 usuario@ejemplo.com's password: *******
 COPYRIGHT            100% |*****************************|  4735
 00:00
 #

   Ya que la huella se guardo en este equipo durante el ejemplo anterior se
   verifica ahora al utilizar scp(1).

   Los argumentos de scp(1) son similares a cp(1), con el fichero o ficheros
   como primer argumento, y el destino como segundo. Ya que el fichero se
   transfiere a traves de la red, a traves de SSH, uno o mas argumentos
   tienen la estructura user@host:<ruta_al_fichero_remoto>.

  14.11.5. Configuracion

   Los ficheros de configuracion del sistema tanto para el daemon OpenSSH
   como para el cliente estan en /etc/ssh.

   ssh_config contiene las opciones del cliente, mientras que sshd_config
   configura el daemon.

   Ademas las opciones sshd_program (/usr/sbin/sshd por defecto), y
   sshd_flags de rc.conf ofrecer mas niveles de configuracion.

  14.11.6. ssh-keygen

   ssh-keygen(1) le permite validar a un usuario sin pedirle la contrasena:

 % ssh-keygen -t dsa
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/user/.ssh/id_dsa):
 Created directory '/home/user/.ssh'.
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /home/user/.ssh/id_dsa.
 Your public key has been saved in /home/user/.ssh/id_dsa.pub.
 The key fingerprint is:
 bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 usuario@host.ejemplo.com

   ssh-keygen(1) creara un par de llaves publica y privada para usar en la
   validacion. La llave privada se guarda en ~/.ssh/id_dsa o en
   ~/.ssh/id_rsa, mientras que la llave publica se guarda en
   ~/.ssh/id_dsa.pub o en ~/.ssh/id_rsa.pub, respectivamente para llaves DSA
   y RSA. La llave publica debe guardarse en el ~/.ssh/authorized_keys de la
   maquina remota para que la configuracion funcione. Las llaves RSA version
   1 deben guardarse en ~/.ssh/authorized_keys.

   De este modo permitira conexiones a la maquina remota mediante llaves SSH
   en lugar de contrasenas.

   Si usa una contrasena al ejecutar ssh-keygen(1), se le pedira al usuario
   una contrasena cada vez que quiera utilizar la llave privada. ssh-agent(1)
   puede evitar la molestia de introducir repetidamente frases largas. esto
   se explica ma adelante, en la Seccion 14.11.7, "ssh-agent y ssh-add".

  Aviso:

   Las opciones y ficheros pueden ser diferentes segun la version de OpenSSH
   que tenga en su sistema; para evitar problemas consulte la pagina de
   manual ssh-keygen(1).

  14.11.7. ssh-agent y ssh-add

   ssh-agent(1) y ssh-add(1) ofrecen metodos para que las llaves SSH se
   puedan cargar en memoria, permitiendo eliminar la necesidad de teclear la
   contrasena cada vez que haga falta.

   ssh-agent(1) gestionara la validacion utilizando la llave (o llaves)
   privada que le cargue. ssh-agent(1) se usa para lanzar otras aplicaciones.
   En el nivel mas basico puede generar una shell o a un nivel mas avanzado
   un gestor de ventanas.

   Para usar ssh-agent(1) en una shell necesitara primero ser invocado como
   argumento por una shell. Segundo, anada la identidad ejecutando ssh-add(1)
   y facilitando la contrasena de la llave privada. Completados estos pasos
   el usuario puede hacer ssh(1) a cualquier equipo que tenga instalada la
   llave publica correspondiente. Por ejemplo:

 % ssh-agent csh
 % ssh-add
 Enter passphrase for /home/user/.ssh/id_dsa:
 Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
 %

   Para utilizar ssh-agent(1) en X11 tendra que incluir una llamada a
   ssh-agent(1) en ~/.xinitrc. De este modo ofrecera los servicios de
   ssh-agent(1) a todos los programas lanzados en X11. Veamos un ejemplo de
   ~/.xinitrc:

 exec ssh-agent startxfce4

   Esto lanzaria ssh-agent(1), que a su vez lanzaria XFCE cada vez que inicie
   X11. Hecho esto y una vez reiniciado X11 para aplicar los cambios puede
   ejecutar ssh-add(1) para cargar todas sus llaves SSH.

  14.11.8. Tuneles SSH

   OpenSSH permite crear un tunel en el que encapsular otro protocolo en una
   sesion cifrada.

   La siguiente orden le dice a ssh(1) que cree un tunel para telnet:

 % ssh -2 -N -f -L 5023:localhost:23 usuario@foo.ejemplo.com
 %

   Veamos las opciones que se le han suministrado a ssh:

   -2

           Obliga a ssh a utilizar la version 2 del protocolo. (No la use si
           esta trabajando con servidores SSH antiguos)

   -N

           Indica que no se ejecutara una orden remota, o solamente tunel. Si
           se omite, ssh iniciaria una sesion normal.

   -f

           Obliga a ssh a ejecutarse en segundo plano.

   -L

           Indica un tunel local segun el esquema puerto local:equipo
           remoto:puerto remoto.

   usuario@foo.ejemplo.com

           El servidor SSH remoto.

   Un tunel SSH crea un socket que escucha en localhost en el puerto
   especificado. Luego reenvia cualquier conexion recibida en el
   puerto/equipo local via la conexion SSH al puerto o equipo remoto
   especificado.

   En el ejemplo el puerto 5023 en localhost se reenvia al puerto 23 del
   localhost de la maquina remota. Ya que 23 es telnet, esto crearia una
   sesion telnet segura a traves de un tunel SSH.

   Puede usar esto para encapsular cualquier otro protocolo TCP inseguro como
   SMTP, POP3, FTP, etc.

   Ejemplo 14.1. Uso de SSH para crear un tunel seguro para SMTP

 % ssh -2 -N -f -L 5025:localhost:25 usuario@correo.ejemplo.com
 usuario@correo.ejemplo.com's password: *****
 % telnet localhost 5025
 Trying 127.0.0.1...
 Connected to localhost.
 Escape character is '^]'.
 220 correo.ejemplo.com ESMTP

   Puede usar esta tecnica junto con ssh-keygen(1) y cuentas adicionales de
   usuario para crear un entorno mas transparente, esto es, mas comodo. Puede
   usar llaves en lugar de teclear contrasenas y puede ejecutar los tuneles
   de varios usuarios.

    14.11.8.1. Ejemplos practicos de tuneles SSH

      14.11.8.1.1. Acceso seguro a un servidor POP3

   En el trabajo hay un servidor SSH que acepta conexiones desde el exterior.
   En la misma red de la oficina reside un servidor de correo que ejecuta un
   servidor POP3. La red, o ruta de red entre su casa y oficina puede o no
   ser completamente de fiar. Debido a esto necesita revisar su correo
   electronico de forma segura. La solucion es crear una conexion SSH al
   servidor SSH de su oficina y llegar por un tunel al servidor de correo.

 % ssh -2 -N -f -L 2110:correo.ejemplo.com:110 usuario@servidor-ssh.ejemplo.com
 usuario@servidor-ssh.ejemplo.com's password: ******

   cuando el tunel este funcionando haga que su cliente de correo envie
   peticiones POP3 a localhost en el puerto 2110. La conexion sera reenviada
   de forma totalmente segura a travees del tunel a correo.ejemplo.com.

      14.11.8.1.2. Saltarse un cortafuegos draconiano

   Algunos administradores de red imponen reglas de cortafuegos
   extremadamente draconianas, filtrando no solo las conexiones entrantes,
   sino tambien las salientes. Tal vez solo se le otorgue acceso a maquinas
   remotas a traves de los puertos 22 y 80 para ssh y navegar en web.

   Tal vez quiera acceder a otros servicios (que tal vez ni siquiera esten
   relacionados con el trabajo), como un servidor Ogg Vorbis para escuchar
   musica. Si ese servidor Ogg Vorbis transmite en un puerto que no sea el 22
   o el 80 no podra tener acceso a el.

   La solucion es crear una conexion SSH fuera del cortafuegos de su red y
   utilizarla para hacer un tunel al servidor Ogg Vorbis.

 % ssh -2 -N -f -L 8888:musica.ejemplo.com:8000 usuario@sistema-no-filtrado.ejemplo.org
 usuario@sistema-no-filtrado.ejemplo.org's password: *******

   Haga que el programa con el que suele escuchar musica haga peticiones a
   localhost puerto 8888, que sera reenviado a musica.ejemplo.com puerto
   8000, evadiendo con exito el cortafuegos.

  14.11.9. La opcion de usuarios AllowUsers

   Limitar que usuarios pueden entrar y desde donde suele ser razonable. La
   opcion AllowUsers le permite configurarlo, por ejemplo, para permitir
   entrar solamente al usuario root desde 192.168.1.32. Puede hacerlo con
   algo parecido a esto en /etc/ssh/sshd_config:

 AllowUsers root@192.168.1.32

   Para permitir al usuario admin la entrada desde cualquier lugar, solamente
   introduzca el nombre de usuario:

 AllowUsers admin

   Puede listar multiples usuarios en la misma linea:

 AllowUsers root@192.168.1.32 admin

  Nota:

   Es importante que incluya a cada usuario que necesite entrar a esta
   maquina o no podran entrar.

   Despues de hacer los cambios a b /etc/ssh/sshd_config debe decirle a
   sshd(8) que cargue de nuevo sus ficheros de configuracion ejecutando:

 # /etc/rc.d/sshd reload

  14.11.10. Lecturas complementarias

   OpenSSH

   ssh(1) scp(1) ssh-keygen(1) ssh-agent(1) ssh-add(1) ssh_config(5)

   sshd(8) sftp-server(8) sshd_config(5)

14.12. Listas de control de acceso a sistemas de ficheros

   Contribuido por Tom Rhodes.

   Ademas de otras mejoras del sistema de ficheros como las instantaneas
   ("snapshots"), FreeBSD 5.0 y siguientes ofrecen las ACL ("Access Control
   Lists", listas de control de acceso) como un elemento mas de seguridad.

   Las listas de control de acceso extienden el modelo de permisos estandar
   de UNIX(R) de una manera altamente compatible (POSIX(R).1e). Esta opcion
   permite al administrador usar con gran provecho un modelo de seguridad mas
   sofisticado.

   Para habilitar soporte de ACL en sistemas de ficheros UFS la siguiente
   opcion:

 options UFS_ACL

   debe ser compilada en el kernel. Si esta opcion no ha sido compilada, se
   mostrara un mensaje de advertencia si se intenta montar un sistema de
   ficheros que soporte ACL. Esta opcion viene incluida en el kernel GENERIC.
   Las ACL dependen de los atributos extendidos habilitados en el sistema de
   ficheros. Los atributos extendidos estan incluidos por defecto en la nueva
   generacion de sistemas de ficheros UNIX(R) UFS2.

  Nota:

   Los atributos extendidos pueden usarse tambien en UFS1 pero requieren una
   carga de trabajo mucho mas elevada que en UFS2. El rendimiento de los
   atributos extendidos es, tambien, notablemente mayor en UFS2. Por todo
   esto si quiere usar ACL le recomendamos encarecidamente que use UFS2.

   LasACL se habilitadan mediante una bandera administrativa durante el
   montaje, acls, en el fichero /etc/fstab. La bandera de montaje puede
   tambien activarse de forma permanente mediante tunefs(8) para modificar
   una bandera de superbloque ACLs en la cabecera del sistema de ficheros. En
   general es preferible usar la bandera de superbloque por varios motivos:

     * La bandera de montaje ACL no puede cambiarse por un remontaje
       (mount(8) -u), sino con un completo umount(8) y un mount(8). Esto
       significa que no se pueden habilitar las ACL en el sistema de ficheros
       raiz despues del arranque. Tambien significa que no se puede cambiar
       la disposicion de un de ficheros una vez que se ha comenzado a usar.

     * Activar la bandera de superbloque provocara que el sistema de ficheros
       se monte siempre con las ACL habilitadas incluso si no existe una
       entrada en fstab o si los dispositivos se reordenan. Esto es asi para
       prevenir un montaje accidental del sistema de ficheros sin tener las
       ACL habilitadas, que podria resultar en que se impongan de forma
       inadecuada las ACL, y en consecuencia problema de seguridad.

  Nota:

   Podemos cambiar el comportamiento de las ACL para permitirle a la bandera
   ser habilitada sin un mount(8) completo, pero puede salirle el tiro por la
   culata si activa las ACL, luego las desactiva, y despues las vuelve a
   activar sin configurar desde cero las atributos extendidos. En general,
   una vez que se han deshabilitado las ACL en un sistema de ficheros no
   deben dehabilitarse, ya que la proteccion de ficheros resultante puede no
   ser compatible las que esperan los usuarios del sistema, y al volver a
   activar las ACL volver a asignar las ACL a ficheros cuyos permisos
   hubieran sido cambiados, lo que puede desenbocar en un escenario
   impredecible.

   Los sistemas de ficheros con ACL habilitadas tienen un signo + (mas) al
   visualizar sus configuraciones de permisos. Por ejemplo:

 drwx------  2 robert  robert  512 Dec 27 11:54 private
 drwxrwx---+ 2 robert  robert  512 Dec 23 10:57 directorio1
 drwxrwx---+ 2 robert  robert  512 Dec 22 10:20 directorio2
 drwxrwx---+ 2 robert  robert  512 Dec 27 11:57 directorio3
 drwxr-xr-x  2 robert  robert  512 Nov 10 11:54 public_html

   Aqui vemos que los directorios directorio1, directorio2, y directorio3
   estan usando ACL. El directorio public_html no.

  14.12.1. Uso de ACL

   Las ACLs del sistema de ficheros pueden comprobarse con getfacl(1). Por
   ejemplo, para ver las configuraciones de ACL del fichero test, uno podria
   usar lo siguiente:

 % getfacl test
         #file:test
         #owner:1001
         #group:1001
         user::rw-
         group::r--
         other::r--

   Para cambiar las configuraciones de las ACL en este fichero use
   setfacl(1). Observe:

 % setfacl -k test

   La bandera -k eliminara todas las ACLs definidas para un fichero o sistema
   ficheros. El metodo preferible seria utilizar -b, ya que deja los campos
   basicos imprescindibles para que las ACL sigan funcionando.

 % setfacl -m u:trhodes:rwx,group:web:r--,o::--- test

   La opcion -m se usa para modificar las entradas por defecto de las ACL.
   Debido a que no habia entradas predefinidas puesto que fueron eliminadas
   por la orden anterior, restauraremos las opciones por defecto y asignara
   las opciones listadas. Tenga en cuenta que si anade un nuevo usuario o
   grupo aparecera el error Invalid argument en la salida estandar stdout.

14.13. Monitorizacion de fallos de seguridad de aplicaciones

   Texto de Tom Rhodes.

   En estos ultimos anos el mundo de la seguridad ha hecho grandes avances en
   cuanto a la gestion de las vulnerabilidades. La amenaza de asaltos a los
   sistemas se incrementa cuando se instalan y configuran aplicaciones de muy
   diversas procedencias en virtualmente cualquier sistema operativo
   disponible.

   La evaluacion de vulnerabilidades es un factor clave en la seguridad;
   aunque FreeBSD libere avisos de seguridad relacionados con el sistema
   base, llevar la gestion de vulnerabilidades hasta cada aplicacion que se
   puede instalar en FreeBSD va mucho mas alla de la capacidad del proyecto
   FreeBSD. A pesar de esto existe una forma de mitigar las vulnerabilidades
   de esas aplicaciones y advertir a los administradores sobre los problemas
   de seguridad a medida que se detectan. Portaudit existe para hacer ese
   trabajo.

   El port security/portaudit consulta una base de datos, actualizada y
   mantenida por el equipo de seguridad y por los desarrolladores de FreeBSD
   en busca de incidentes de seguridad que hayan sido detectados.

   Si quiere usar Portaudit instalelo desde la coleccion de ports:

 # cd /usr/ports/security/portaudit && make install clean

   Durante el proceso de instalacion los ficheros de configuracion de
   periodic(8) se actualizan haciendo que Portaudit aparezca en el mensaje
   sobre la seguridad del sistema que diariamente Recuerde que ese correo
   (que se envia a la cuenta root es muy importante y deberia leerlo. No hay
   ninguna configuracion que deba modificar o crear.

   Despues de la instalacion un administrador debe actualizar la base de
   datos alojada en local en /var/db/portaudit mediante:

 # portaudit -F

  Nota:

   La base de datos sera actualizada automaticamente durante la ejecucion de
   periodic(8); asi que la orden anterior es totalmente opcional. Solo se
   necesita para los siguientes ejemplos.

   Si quiere comproblar si entre las aplicaciones que haya instalado desde el
   arbol de ports en su sistema hay problemas de seguridad solo tiene que
   ejecutar lo siguiente:

 # portaudit -a

   Este es un ejemplo de la salida:

 Affected package: cups-base-1.1.22.0_1
 Type of problem: cups-base -- HPGL buffer overflow vulnerability.
 Reference: <http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html>

 1 problem(s) in your installed packages found.

 You are advised to update or deinstall the affected package(s) immediately.

   El administrador del sistema obtendra mucha mas informacion sobre el
   problema de seguridad dirigiendo su navegador web a la URL que aparece en
   el mensaje. Esto incluye versiones afectadas (por version de port de
   FreeBSD), junto con otros sitios web que contengan advertencias de
   seguridad.

   En pocas palabras, Portaudit es un programa muy poderoso y extremadamente
   util cuando se combina con el port Portupgrade.

14.14. FreeBSD Security Advisories

   Texto de Tom Rhodes.

   Como muchos sistemas operativos con calidad de produccion, FreeBSD publica
   "Security Advisories" (advertencias de seguridad. Estas advertencias
   suelen enviarse por correo a las listas de seguridad e incluidas en la
   Errata solamente despues de que la version apropiada haya sido corregida.
   Esta seccion tiene como fin explicar en que consiste una advertencia de
   seguridad, como entenderla y que medidas hay que tomar para parchear el
   sistema.

  14.14.1. ?Que aspecto tiene una advertencia de seguridad?

   Las advertencias de seguridad de FreeBSD tienen un aspecto similar a la
   que se muestra aqui. Fue enviada a la lista de correo
   freebsd-security-notifications.

 =============================================================================
 FreeBSD-SA-XX:XX.UTIL                                     Security Advisory
                                                           The FreeBSD Project

 Topic:          denial of service due to some problem1

 Category:       core2
 Module:         sys3
 Announced:      2003-09-234
 Credits:        Person@EMAIL-ADDRESS5
 Affects:        All releases of FreeBSD6
                 FreeBSD 4-STABLE prior to the correction date
 Corrected:      2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
                 2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
                 2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
                 2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
                 2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
                 2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
                 2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
                 2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
                 2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)7
 FreeBSD only:   NO8

 For general information regarding FreeBSD Security Advisories,
 including descriptions of the fields above, security branches, and the
 following sections, please visit
 http://www.FreeBSD.org/security/.

 I.   Background9


 II.  Problem Description10


 III. Impact11


 IV.  Workaround12


 V.   Solution13


 VI.  Correction details14


 VII. References15

   1  El campo Topic indica cual es exactamente el problema. Basicamente es   
      la introduccion de la advertencia de seguridad actual e indica el uso   
      malintencionado que puede darse a la vulnerabilidad.                    
   2  Category se refiere a la parte afectada del sistema, que puede ser      
      core, contrib o ports. La categoria core significa que la               
      vulnerabilidad afecta a un componente central del sistema operativo     
      FreeBSD. La categoria contrib significa que la vulnerabilidad afecta a  
      software que no ha sido desarrollado por el proyecto FreeBSD, como      
      sendmail. La categoria ports indica que la vulnerabilidad afecta a      
      software incluido en la coleccion de ports.                             
   3  El campo Module se refiere a la ubicacion del componente, por ejemplo   
      sys. En este ejemplo vemos que esta afectado el modulo sys; por lo      
      tanto esta vulnerabilidad afecta a componentes utilizados dentro del    
      kernel.                                                                 
   4  El campo Announced refleja la fecha de publicacion de la advertencia de 
      seguridad fue publicada o anunciada al mundo. Esto significa que el     
      equipo de seguridad ha verificado que el que el problema existe y que   
      se ha incluido un parche que soluciona el problema en el repositorio de 
      codigo fuente de FreeBSD.                                               
   5  El campo Credits le da el credito al individuo u organizacion que       
      descubrio y reporto la vulnerabilidad.                                  
   6  El campo Affects explica a que versiones de FreeBSD afecta esta         
      vulnerabilidad. En el caso del kernel una rapida revision de la salida  
      de ident en los ficheros afectados ayudara a determinar la version. En  
      el caso de de los ports el numero de version aparece despues del nombre 
      del port en /var/db/pkg. Si el sistema no se sincroniza con el          
      repositorio CVS de FreeBSD y se reconstruye diariamente, existe la      
      posibilidad de que este afectado por el problema de seguridad.          
   7  El campo Corrected indica la fecha, hora, zona horaria y version de     
      FreeBSD en que fue corregido.                                           
   8  El campo FreeBSD only indica si la vulnerabilidad afecta solamente a    
      FreeBSD o si afecta tambien a otros sistemas operativos.                
   9  El campo Background informa acerca de que es exactamente la aplicacion  
      afectada. La mayor parte de las veces se refiere a por que la           
      aplicacion existe en FreeBSD, para que se usa y un poco de informacion  
      de como llego llego a ocupar el lugar que ocupa en el sistema o el      
      arbol de ports.                                                         
   10 El campo Problem Description explica el problema de seguridad en        
      profundidad. Puede incluir informacion del codigo erroneo, o incluso    
      como puede usarse maliciosamente el error para abrir un agujero de      
      seguridad.                                                              
   11 El campo Impact describe el tipo de impacto que el problema pueda tener 
      en un sistema. Por ejemplo, esto puede ser desde un ataque de           
      denegacion de servicio, hasta una escalada de privilegios de usuario, o 
      incluso ofrecer al atacante acceso de superusuario.                     
   12 El campo Workaround ofrece una solucion temoral posible para los        
      administradores de sistemas que tal vez no puedan actualizar el         
      sistema. Esto puede deberse a la falta de tiempo, disponibilidad de de  
      red, o a muchas otras razones. A pesar de todo la la seguridad no se    
      debe tomar a la ligera y un sistema afectado debe parchearse al menos   
      aplicar una solucion temporal para el agujero de seguridad.             
   13 El campo Solution ofrece instrucciones para parchear el sistema         
      afectado. Este es un metodo paso a paso, probado y verificado para      
      parchear un sistema y que trabaje seguro.                               
   14 El campo Correction Details despliega la rama del CVS o el nombre de la 
      version con los puntos cambiados a guiones bajos. Tambien muestra el    
      numero de revision de los ficheros afectados dentro de cada rama.       
   15 El campo References suele ofrecer fuentes adicionales de informacion:   
      URL, libros, listas de correo y grupos de noticias.                     

14.15. Contabilidad de procesos

   Texto de Tom Rhodes.

   La contabilidad de procesos es un metodo de seguridad en el cual un
   administrador puede mantener un seguimiento de los recursos del sistema
   utilizados, su distribucion entre los usuarios, ofrecer monitorizacion del
   sistema y seguir la pista minimamente a las ordenes de usuario.

   Esto en realidad tiene sus puntos positivos y negativos. Uno de los
   positivos es que una intrusion puede minimizarse en el momento de
   producirse. Uno negativo es la cantidad de logs generados por la
   contabilidad de procesos y el espacio de disco que requieren. Esta seccion
   guiara al administrador a traves de los fundamentos de la contabilidad de
   procesos.

  14.15.1. Como habilitar y utilizar la contabilidad de procesos

   Antes de poder usar la contabilidad de procesos tendra que habilitarla.
   Ejecute la siguiente orden:

 # touch /var/account/acct

 # accton /var/account/acct

 # echo 'accounting_enable="YES"' >> /etc/rc.conf

   Una vez habilitada, la contabilidad de procesos empezara a seguir el
   rastro de estadisticas de la CPU, ordenes, etc. Todos los logs de
   contabilidad estan en un formato ilegible para humanos, pero accesibles
   para sa(8). Si se ejecuta sin opciones, sa imprimira informacion sobre el
   numero de llamadas por usuario, el tiempo total transcurrido expresado en
   minutos, el tiempo total de CPU y de usuario en minutos, el numero medio
   de operaciones de E/S, etc.

   Para ver informacion acerca de las ordenes que se estan ejecutados puede
   usar la lastcomm(1). lastcomm imprime ordenes ejecutadas por los usuarios
   en ttys(5) especificas. Veamos un ejemplo:

 # lastcomm ls
         trhodes ttyp1

   Imprimiria todas las veces (conocidas) que el usuario trhodes ha usado ls
   en la terminal ttyp1.

   Hay muchas mas opciones que pueden serle muy utiles. Si quiere conocerlas
   consulte las paginas de manual lastcomm(1), acct(5) y sa(8).

     ----------------------------------------------------------------------

   [8] En FreeBSD la contrasena del login estandar puede ser de hasta 128
   caracteres de longitud.

Capitulo 15. Jaulas

   Escrito por Matteo Riondato.
   Tabla de contenidos

   15.1. Sinopsis

   15.2. Terminos relacionados con las jaulas

   15.3. Introduccion

   15.4. Creacion y gestion de jaulas

   15.5. Administracion y personalizacion a fondo

   15.6. Uso de las jaulas

15.1. Sinopsis

   En este capitulo se explica que son las jaulas en FreeBSD y como usarlas.
   Las jaulas, citadas con frecuencia como la nueva generacion de entornos
   chroot, son una herramienta muy poderosa que se ha puesto al servicio de
   los administradores de sistemas, aunque su uso mas basico puede ser
   tambien de suma utilidad para usuarios avanzados.

   Tras leer este capitulo sabra usted:

     * Que es una jaula y para que puede usarse en sistemas FreeBSD.

     * Como generar, arrancar y parar una jaula.

     * Como manejarse con los rudimentos de la administracion de las jaulas,
       tanto desde dentro como desde fuera de la jaula.

   Otras fuentes de informacion util sobre las jaulas:

     * La pagina de manual jail(8). Es la referencia completa de jail, la
       herramienta administrativa de FreeBSD con la que se arrancan, paran y
       controlan las jaulas.

     * Las listas de correo y sus respectivos archivos. Los archivos de la
       lista de correo para preguntas generales sobre FreeBSD, entre otras
       listas de correo alojadas en el servidor de listas de FreeBSD
       contienen una enorme cantidad de informacion sobre jaulas. La ayuda
       que esta buscando puede obtenerla, por tanto, de una busqueda en los
       archivos de las listas o de enviar una pregunta que nadie haya hecho
       en la lista de correo freebsd-questions.

15.2. Terminos relacionados con las jaulas

   Para ayudar a comprender las partes de FreeBSD que intervienen en el
   funcionamiento de las jaulas, su funcionamiento interno y el modo en que
   interactuan con el resto de FreeBSD, durante el resto del capitulo se
   utilizaran los siguientes terminos:

   chroot(2) (comando)

           Es una llamada al sistema de FreeBSD que restringe el directorio
           raiz de un proceso y sus hijos.

   chroot(2) (entorno)

           Es el entorno de procesos que se ejecutan en un "chroot". Esto
           incluye recursos como la parte visible del sistema de ficheros,
           los ID de usuario y grupo disponibles, interfaces de red u otros
           mecanismos IPC.

   jail(8) (comando)

           La herramienta de administracion que permite arrancar procesos
           dentro del entorno de una jaula.

   servidor (sistema, proceso, usuario, etc)

           El sistema que controla una jaula. El servidor tiene acceso a
           todos los recursos de hardware y puede controlar procesos tanto
           dentro como fuera de la jaula. Una de las diferencias importantes
           entre el sistema que aloja la jaula y la jaula propiamente dicha:
           las limitaciones que afectan a los procesos que se ejecutan con
           privilegios de superusuario dentro de la jaula no dependen de los
           procesos del servidor que la aloja.

   enjaulado (sistema, proceso, usuario, etc.)

           Un proceso, usuario u otra entidad, cuyo acceso a los recursos
           esta restringido por una jaula de FreeBSD.

15.3. Introduccion

   Dado lo dificil y desconcertante de la tarea de administrar sistemas se
   han ido desarrollando poderosas herramientas con el fin de hacer la vida
   del administrador mas sencilla. Dichas herramientas suelen facilitar
   cierto tipo de mejoras en la instalacion, configuracion o mantenimiento de
   los sistemas. Una de las tareas que se espera que cumpla un administrador
   de sistemas es la configuracion adecuada de la seguridad, de modo que
   pueda dar el servicio para el que se ha destinado sin que pueda verse
   comprometido.

   Una de las herramientas disponibles para mejorar los niveles de seguridad
   de un sistema FreeBSD es el uso de jaulas. Las jaulas fueron introducidas
   en FreeBSD 4.X por Poul-Henning Kamp, pero en FreeBSD 5.X sus capacidades
   fueron aumentadas hasta hacer de ellas un subsistema poderoso y flexible.
   Su desarrollo sigue avanzando, aumentando asi su utilidad, rendimiento,
   fiabilidad y seguridad.

  15.3.1. Que es una jaula

   Los sistemas tipo BSD disponen de chroot(2) desde la epoca de 4.2BSD.
   chroot(8) permite restringir el directorio raiz de un conjunto de
   procesos, creando un entorno seguro y separado del resto del sistema. Los
   procesos creados dentro de un entorno chroot no pueden acceder a ficheros
   o recursos ubicados fuera del mismo. Por esta razon, si un atacante logra
   comprometer un servicio que se ejecuta en un entorno chroot no deberia
   automaticamente poder acceder al resto del sistema. chroot(8) es una buena
   herramienta para tareas sencillas que no requieran mucha flexibilidad o
   caracteristicas complejas o muy avanzadas. Por desgracia, desde la
   invencion de chroot se han ido encontrando muchas formas de saltarse las
   barreras que chroot impone y, aunque esten corregidas en las versiones mas
   modernas del kernel de FreeBSD, era evidente que chroot(2) no era la
   solucion ideal para ejecutar servicios con seguridad. Habia que
   implementar un nuevo subsistema.

   Este es uno de los principales motivos por los que se crearon las jaulas.

   Las jaulas llevan mas alla en muchos sentidos el concepto tradicional de
   entorno chroot(2). En un entorno chroot(2) tradicional los procesos solo
   ven limitada la parte del sistema de ficheros a la que pueden acceder. El
   resto de recursos del sistema, es decir, el conjunto de usuarios del
   sistema, los procesos en ejecucion o el subsistema de red estan
   compartidos entre el sistema alojado y el servidor. Las jaulas extienden
   este modelo virtualizando no solamente el acceso al sistema de ficheros,
   sino al conjunto de usuarios, al subsistema de red del kernel de FreeBSD y
   unas cuantas cosas mas. En la Seccion 15.5, "Administracion y
   personalizacion a fondo" se detallan diversas opciones de control
   exhaustivo para configurar el acceso a recursos de un entorno enjaulado.

   Una jaula se caracteriza por disponer de cuatro elementos:

     * Un "subarbol" de directorios: el punto desde el que se entra a una
       jaula. Una vez dentro de la jaula un proceso no puede escapar de dicho
       "subarbol". Los tipicos problemas de seguridad que aparecin una y otra
       vez en el diseno del chroot(2) original no afectan a las jaulas de
       FreeBSD.

     * Un nombre de maquina ("hostname"), que definira a la jaula. Las jaulas
       se usan principalmente para albergar servicios de red, por lo que
       disponer de un nombre de maquina descriptivo ayuda enormemente al
       administrador de sistemas.

     * Una direccion IP: debe asignarse a la jaula y no cambiarse durante el
       ciclo de vida de la jaula. La direccion IP de una jaula suele ser un
       alias de un interfaz de red, aunque no es imprescindible que asi sea.

     * Un comando: La ruta de un ejecutable ubicado dentro de la jaula. La
       ruta es relativa al directorio raiz de la jaula, por lo que puede ser
       muy diferentes segun el entorno.

   Ademas, las jaulas pueden tener sus propios usuarios e incluso su propio
   root. Es obvio que este usuario root tiene su poder para hacer
   circunscrito a la jaula y, desde el punto de vista del servidor, el
   usuario root de la jaula no es omnipotente. El usuario root de la jaula no
   puede ejecutar tareas criticas fuera de la jaula (jail(8)) a la que
   pertenece. Mas adelante, en la Seccion 15.5, "Administracion y
   personalizacion a fondo", se dara mas informacion sobre las restricciones
   del usuario root.

15.4. Creacion y gestion de jaulas

   Algunos administradores dividen las jaulas en dos tipos: jaulas
   "completas", que recrean un sistema FreeBSD real, y jaulas "de servicio",
   que son aquellas que estan dedicadas a una sola aplicacion o servicio, en
   muchos casos ejecutandose sin privilegios. Se trata de una division
   exclusivamente conceptual, por lo que el proceso de generacion de una
   jaula no se ve afectado por ella. La pagina de manual jail(8) explica
   claramente el procedimiento a seguir para generar una jaula:

 # setenv D /aqui/esta/la/jaula
 # mkdir -p $D 1
 # cd /usr/src
 # make world DESTDIR=$D 2
 # cd etc/ [9]
 # make distribution DESTDIR=$D 3
 # mount_devfs devfs $D/dev 4

   1 El mejor punto de partida es la eleccion del punto del sistema de        
     ficheros del servidor donde estara fisicamente ubicada la jaula.         
     /usr/jail/nombredelajaula es un buen sitio. nombredelajaula es el nombre 
     de maquina que identifica a la jaula. El sistema de ficheros /usr/ suele 
     tener espacio suficiente para albergar el sistema de ficheros de la      
     jaula que, cuando se trata de jaulas "completas", es esencialmente lo    
     necesario para alojar todos y cada uno de los sistemas de ficheros en    
     una instalacion del sistema base por omision de FreeBSD.                 
   2 Este comando creara el contenido necesario (binarios, bibliotecas,       
     paginas de manual, etc.) y lo copiara al "subarbol" elegido como         
     ubicacion fisica de la jaula. Todo se hace al tipico estilo FreeBSD: se  
     compila todo y luego se instala en la ruta de destino.                   
   3 Al pasar el "target" distribution a make se instalan todos los ficheros  
     de configuracion necesarios. En pocas palabras, instala cada fichero     
     instalable que haya en /usr/src/etc/ en el directorio /etc de la jaula,  
     es decir, en $D/etc/.                                                    
   4 No es imprescindible montar el sistema de ficheros devfs(8) dentro de la 
     jaula aunque por otra parte (casi) todas las aplicaciones necesitan      
     acceso al menos a un dispositivo, dependiendo esto del proposito de la   
     aplicacion. Es muy importante el control del acceso a dispositivos desde 
     la jaula, puesto que una configuracion descuidada puede permitir que un  
     atacante haga de las suyas. El control sobre devfs(8) se gestiona        
     mediante reglas que se detallan en las paginas de manual devfs(8) y      
     devfs.conf(5).                                                           

   Una vez instalada la jaula puede arrancarla mediante jail(8). jail(8) usa
   los cuatro argumentos que se detallan en la Seccion 15.3.1, "Que es una
   jaula". Puede pasarle otros argumentos ademas de estos, por ejemplo para
   ejecutar procesos enjaulados bajo los permisos de un usuario especifico.
   El argumento comando depende del tipo de jaula; si se trata de un virtual
   system /etc/rc es una buena eleccion, puesto que ejecutara la secuencia de
   arranque de un sistema FreeBSD real. Si se trata de una jaula de servicio
   depende del servicio o aplicacion que se quiera ejecutar mediante la
   jaula.

   Con frecuencia las jaulas se arrancan durante el arranque del servidor que
   las aloja; el sistema rc de FreeBSD permite hacerlo de un modo muy
   sencillo.

    1. Puede crear una lista de jaulas que quiera arrancar en el inicio del
       sistema en el fichero rc.conf(5):

 jail_enable="YES"   # Ponga NO si quiere desactivar el arranque de jaulas
 jail_list="www"     # Lista de nombres de jaulas separados por espacios

    2. Tendra que anadir parametros especificos para cada jaula al fichero
       rc.conf(5):

 jail_www_rootdir="/usr/jail/www"     # directorio raiz de la jaula
 jail_www_hostname="www.example.org"  # nombre de maquina de la jaula
 jail_www_ip="192.168.0.10"           # direccion IP de la jaula
 jail_www_devfs_enable="YES"          # montar devfs en la jaula
 jail_www_devfs_ruleset="www_ruleset" # reglas a aplicar a devfs dentro de la jaula

       El arranque de jaulas por omision que se configure en rc.conf(5)
       ejecutara el script /etc/rc de la jaula y asumira que es un sistema
       virtual completo. Si se trata de una jaula de servicio el comando de
       arranque por omision tendra que cambiarse configurando la opcion
       jail_nombredejaula_exec_start segun convenga.

  Nota:

       Si quiere consultar la lista completa de opciones consulte la pagina
       de manual rc.conf(5).

   Puede arrancar o parar a mano una jaula mediante el script /etc/rc.d/jail
   siempre y cuando la jaula aparezca en rc.conf:

 # /etc/rc.d/jail start www
 # /etc/rc.d/jail stop www

   De momento no hay una forma limpia de apagar una jaula (jail(8)) debido a
   que los comandos que se usan normalmente para producir un apagado limpio
   del sistema no pueden usarse dentro de una jaula. La mejor forma de parar
   una jaula es ejecutar el siguiente comando desde dentro de la propia jaula
   o bien mediante jexec(8) desde fuera:

 # sh /etc/rc.shutdown

   Para mas informacion consulte la pagina de manual jail(8).

15.5. Administracion y personalizacion a fondo

   Hay diversas opciones que pueden usarse en las jaulas y varios tipos de
   formas de combinar un sistema FreeBSD servidor y las jaulas y poder
   disponer de aplicaciones de alto nivel. En esta seccion se muestra lo
   siguiente:

     * Algunas de las opciones disponibles para personalizar el
       comportamiento y las restricciones de seguridad que pueden aplicarse
       en una jaula.

     * Algunas de las aplicaciones de alto nivel creadas para la
       administracion de jaulas. Estas aplicaciones estan en la coleccion de
       ports y pueden utilizarse en conjunto para implementar productos
       basados en jaulas.

  15.5.1. Herramientas del sistema para la personalizacion de jaulas en FreeBSD

   La personalizacion a fondo de las jaulas se hace en su mayor parte
   mediante la configuracion de variables sysctl(8). Hay una subcategoria
   especial de sysctl para que sea mas sencillo organizar las opciones mas
   mas importantes: se trata de las opciones de la jerarquia security.jail.*
   del kernel de FreeBSD. A continuacion veremos una lista de las principales
   sysctl relacionadas con las jaulas y los valores que tienen por omision.
   Los nombres deberian describir por si mismos que funcion tienen (N. del
   T.: En ingles, claro) pero si necesita mas informacion sobre ellas
   consulte las paginas de manual jail(8) y sysctl(8).

     * security.jail.set_hostname_allowed: 1

     * security.jail.socket_unixiproute_only: 1

     * security.jail.sysvipc_allowed: 0

     * security.jail.enforce_statfs: 2

     * security.jail.allow_raw_sockets: 0

     * security.jail.chflags_allowed: 0

     * security.jail.jailed: 0

   El administrador del servidor puede usar estas variables para anadir o
   quitar limitaciones impuestas por omision al usuario root. Tenga en cuenta
   que hay ciertas limitaciones que no pueden quitarse. El usuario root no
   puede montar o desmontar sistemas de ficheros desde su jaula. El usuario
   root no puede cargar o descargar reglas de devfs(8), configurar reglas de
   cortafuegos ni ejecutar muchas otras tareas administrativas que requieran
   modificaciones o acceso a datos internos del kernel, como cambiar el nivel
   de seguridad securelevel del kernel.

   El sistema base de FreeBSD contiene un conjunto basico de herramientas que
   permiten el acceso a informacion sobre jaulas activas en el sistema, asi
   como la conexion a una jaula para ejecutar comandos administrativos.
   jls(8) y jexec(8) forman parte del sistema base de FreeBSD y permiten
   ejecutar las siguientes tareas:

     * Mostrar una lista de jaulas activas y sus correspondientes
       identificadores de jaula (JID), direccion IP, nombre de maquina y
       ruta.

     * Conectarse a una jaula en ejecucio desde el servidor y ejecutar un
       comando dentro de la jaula o realizar tareas administrativas dentro de
       dicha jaula. Esto es muy util cuando el usuario root quiere apagar la
       jaula de forma limpia. La herramienta jexec(8) permite tambien
       arrancar una shell dentro de la jaula para realizar tareas
       administrativas. Veamos un ejemplo:

 # jexec 1 tcsh

  15.5.2. Herramientas para tareas administrativas de alto nivel en la Coleccion
  de Ports

   Entre las variadas aplicaciones ajenas al Proyecto FreeBSD que han ido
   apareciendo para administrar jaulas una de las mas completas y utiles es
   sysutils/jailutils. Es un conjunto de pequenas aplicaciones de mucha ayuda
   en la gestion de una jaula (jail(8)). Por favor, consulte su pagina web
   para mas informacion.

15.6. Uso de las jaulas

  15.6.1. Jaulas "de servicio"

   Escrito por Daniel Gerzo.

   Esta seccion esta basada en una idea que Simon L. B. Nielsen presento por
   primera vez en http://simon.nitro.dk/service-jails.html y en un articulo
   con contenido adicional escrito por Ken Tom <locals@gmail.com>. En esta
   seccion se detalla como configurar un sistema FreeBSD que anade una capa
   adicional de seguridad mediante el uso de jail(8). Para su verdadero
   aprovechamiento se asume que el sistema en el que se vaya a aplicar
   ejecuta al menos RELENG_6_0 y que la informacion que contienen las
   secciones previas de este capitulo se ha comprendido totalmente.

    15.6.1.1. Diseno

   Uno de los mayores problemas de las jaulas es la gestion de su proceso de
   actualizacion. Este proceso tiene a ser un problema porque cada jaula
   tiene que recompilarse integramente desde el codigo fuente cada vez que
   hay que actualizarla. Esto no es un gran problema si tenemos una sola
   jaula puesto que el proceso de actualizacion es bastante simple, pero si
   hay muchas jaulas sera un trabajo largo y tedioso.

  Aviso:

   : Esta configuracion requiere mucha experiencia con FreeBSD y el uso de
   sus caracteristicas. Si los pasos que se detallan a continuacion le
   parecen demasiado complicados puede echar un vistazo a sistemas mas
   sencillos como sysutils/ezjail, que le permitira acceder a un metodo de
   administracion de jaulas en FreeBSD mas sencillo y no es tan sofisticado
   como el que le proponemos a continuacion.

   El origen de esta idea es resolver los problemas antes descritos
   compartiendo el maximo posible entre distintas jaulas, de un modo seguro
   (utilizando montajes using read-only mount_nullfs(8) mounts) para que la
   actualizacion sea mas sencilla y el ubicar servicios aislados en jaulas
   sea mas interesante. Ademas, se presenta una forma sencilla de anadir o
   borrar jaulas asi como una forma de actualizarlas.

  Nota:

   Los ejemplos de servicios en este contexto son: un servidor HTTP,un
   servidor DNS, un servidor SMTP, etc.

   Los objetivos de la configuracion descrita en esta seccion son:

     * Crear una estructura de jaulas simple y facil de entender. Esto
       implica no tener que ejecutar un "installworld" completo en todas y
       cada una de las jaulas.

     * Facilitar la creacion de nuevas jaulas o el borrado de jaulas
       previamente existentes.

     * Facilitar la actualizacion de jaulas ya existentes.

     * Hacer posible el uso de una rama de FreeBSD personalizada.

     * Ser paranoico en cuanto a seguridad, reduciendo todo lo posible la
       posibilidad de que los sistemas se vean comprometidos.

     * Ahorrar todo el espacio e inodos que sea posible.

   Como ya se ha dicho, este diseno se basa en gran medida en el disponer de
   una unica plantilla en modo de solo lectura (a la que llamaremos nullfs)
   montada en cada jaula y un dispositivo en modo lectura-escritura por cada
   jaula. El dispositivo puede ser otro disco fisico adicional, una particion
   o un dispositivo md(4) basado en un vnode. En este ejemplo utilizaremos
   montajes nullfs en modo lectura-escritura.

   La estructura del sistema de ficheros se detalla en la siguiente lista:

     * Cada jaula se montara bajo /home/j.

     * /home/j/mroot sera la plantilla para cada jaula y la particion de solo
       lectura para todas las jaulas.

     * Se creara un directorio vacio para cada jaula bajo el directorio
       /home/j.

     * Cada jaula tendra un directorio /s que estara enlazado con la parte de
       lectura-escritura del sistema.

     * Cada jaula tendra su propio sistema en modo lectura-escritura basado
       en /home/j/skel.

     * Cada parte de lectura-escritura correspondiente a cada jaula se creara
       en /home/js.

  Nota:

   Se asume que las jaulas se instalaran bajo la particion /home. Por
   supuesto esto no es en absoluto obligatorio, pero hay que tener en cuenta
   que debe hacerse el mismo cambio en cada uno de los ejemplos que se
   muestran mas adelante.

    15.6.1.2. Creacion de la plantilla

   En esta seccion se describen los pasos necesarios para crear la plantilla
   maestra que conformara la parte de solo lectura que usaran las jaulas.

   Siempre es recomendable actualizar el sistema FreeBSD a la ultima rama
   -RELEASE. Consulte el capitulo correspondiente de este libro si necesita
   mas informacion. En caso de que la actualizacion no sea posible tendra que
   usar "buidworld" para poder seguir adelante. Tambien necesitara el paquete
   sysutils/cpdup. Usaremos portsnap(8) para descargar la Coleccion de Ports
   de FreeBSD. El capitulo sobre Portsnap es siempre una lectura muy
   recomendable para quienes no tengan experiencia con su funcionamiento.

    1. Lo primero que haremos sera crear una estructura de directorios para
       el sistema de ficheros de solo lectura que contendra los binarios de
       nuestras jaulas, luego iremos al directorio que contiene el arbol de
       codigo de FreeBSD e instalaremos el sistema de ficheros de solo
       lectura en la plantilla de las jaulas:

 # mkdir /home/j /home/j/mroot
 # cd /usr/src
 # make installworld DESTDIR=/home/j/mroot

    2. Una vez hecho esto, prepararemos la Coleccion de Ports de FreeBSD para
       nuestras jaulas asi como un arbol de codigo FreeBSD, necesario para
       usar mergemaster:

 # cd /home/j/mroot
 # mkdir usr/ports
 # portsnap -p /home/j/mroot/usr/ports fetch extract
 # cpdup /usr/src /home/j/mroot/usr/src

    3. Crear la estructura de directorios necesaria para la parte de
       lectura-escritura del sistema:

 # mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles
 # mv etc /home/j/skel
 # mv usr/local /home/j/skel/usr-local
 # mv tmp /home/j/skel
 # mv var /home/j/skel
 # mv root /home/j/skel

    4. Usamos mergemaster para instalar los ficheros de configuracion que
       falten. Despues nos libramos de los directorios adicionales que haya
       creado mergemaster:

 # mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i
 # cd /home/j/skel
 # rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev

    5. Ahora enlazamos simbolicamente el sistema de ficheros de
       lectura-escritura con el sistema de ficheros de solo lectura. Por
       favor, asegurese de que los enlaces simbolicos se crean en las
       ubicaciones correctas: s/. Si se usan directorios reales o directorios
       erroneos la instalacion no funcionara.

 # cd /home/j/mroot
 # mkdir s
 # ln -s s/etc etc
 # ln -s s/home home
 # ln -s s/root root
 # ln -s ../s/usr-local usr/local
 # ln -s ../s/usr-X11R6 usr/X11R6
 # ln -s ../../s/distfiles usr/ports/distfiles
 # ln -s s/tmp tmp
 # ln -s s/var var

    6. Como ultimo paso, cree un /home/j/skel/etc/make.conf generico con el
       siguiente contenido:

 WRKDIRPREFIX?=  /s/portbuild

       El tener WRKDIRPREFIX configurado de este modo hara posible compilar
       ports de FreeBSD dentro de cada jaula. Recuerde que el el directorio
       de los ports es de solo lectura. La ruta personalizada por
       WRKDIRPREFIX permite ejecutar compilaciones en la parte de solo
       lectura de cada jaula.

    15.6.1.3. Creacion de las jaulas

   Ya tenemos una plantilla de jaulas de FreeBSD completa, asi que podemos
   configurar nuestras jaulas en /etc/rc.conf. En este ejemplo crearemos 3
   jaulas: "NS", "MAIL" y "WWW".

    1. Introduzca las siguientes lineas en el fichero /etc/fstab; con esto
       cada jaula tendra acceso a la plantilla de solo lectura y al espacio
       de lectura-escritura:

 /home/j/mroot   /home/j/ns     nullfs  ro  0   0
 /home/j/mroot   /home/j/mail   nullfs  ro  0   0
 /home/j/mroot   /home/j/www    nullfs  ro  0   0
 /home/js/ns     /home/j/ns/s   nullfs  rw  0   0
 /home/js/mail   /home/j/mail/s nullfs  rw  0   0
 /home/js/www    /home/j/www/s  nullfs  rw  0   0

  Nota:

       Las particiones que tienen un 0 en la columna "pass" no seran
       revisadas por fsck(8) durante el arranque y las que tienen un 0 en la
       columna "dump" no seran copiadas por dump(8). No nos interesa que fsck
       compruebe la integridad de montajes nullfs ni que dump haga copias de
       seguridad de montajes nullfs de solo lectura de las jaulas. Por esta
       razon el ejemplo de fstab tiene en las dos ultimas columnas "0 0".

    2. Configure las jaulas en /etc/rc.conf:

 jail_enable="YES"
 jail_set_hostname_allow="NO"
 jail_list="ns mail www"
 jail_ns_hostname="ns.ejemplo.org"
 jail_ns_ip="192.168.3.17"
 jail_ns_rootdir="/usr/home/j/ns"
 jail_ns_devfs_enable="YES"
 jail_mail_hostname="mail.ejemplo.org"
 jail_mail_ip="192.168.3.18"
 jail_mail_rootdir="/usr/home/j/mail"
 jail_mail_devfs_enable="YES"
 jail_www_hostname="www.ejemplo.org"
 jail_www_ip="62.123.43.14"
 jail_www_rootdir="/usr/home/j/www"
 jail_www_devfs_enable="YES"

  Aviso:

       : La razon por la que jail_nombre_rootdir contiene /usr/home y no
       /home es que la ruta fisica del directorio/home en una instalacion de
       FreeBSD por omision es /usr/home. La variable jail_nombre_rootdir no
       debe apuntar a una ruta que contenga un enlace simbolico porque seria
       imposible arrancar las jaulas. Utilice la herramienta realpath(1) para
       asegurarse del valor exacto que debe asignar a la variable. Por favor,
       consulte el aviso de seguridad FreeBSD-SA-07:01.jail para mas
       informacion.

    3. Creamos los puntos de montaje de sistemas de ficheros de solo lectura
       correspondientes a cada jaula:

 # mkdir /home/j/ns /home/j/mail /home/j/www

    4. Instalamos la plantilla de lectura-escritura dentro de cada jaula.
       Observe que utilizamos sysutils/cpdup para asegurarnos de que se hace
       una copia exacta de cada directorio:

 # mkdir /home/js
 # cpdup /home/j/skel /home/js/ns
 # cpdup /home/j/skel /home/js/mail
 # cpdup /home/j/skel /home/js/www

    5. Llegados a este punto las jaulas estan configuradas y listas para
       arrancar. Monte los sistemas de ficheros de cada jaula y luego
       arranquelas con el script /etc/rc.d/jail:

 # mount -a
 # /etc/rc.d/jail start

   Las jaulas deberian haber arrancado. Asegurese de ello con jls(8). La
   salida que vera debe parecerse a esta:

 # jls
    JID  IP Address      Hostname                      Path
      3  192.168.3.17    ns.ejemplo.org                /home/j/ns
      2  192.168.3.18    mail.ejemplo.org              /home/j/mail
      1  62.123.43.14    www.ejemplo.org               /home/j/www

   En este punto deberia ser posible entrar a cada una de las jaulas, anadir
   nuevos usuarios o configurar daemons. La columna JID indica el numero de
   identificacion de cada jaula que este funcionando en el sistema. Con el
   siguiente comando puede ejecutar tareas administrativas en la jaula cuyo
   JID sea 3:

 # jexec 3 tcsh

    15.6.1.4. Actualizacion

   Llegara el momento en el que sea necesario actualizar el sistema, bien por
   seguridad o porque sea util para las jaulas disponer de alguna nueva
   caracteristica del sistema. El diseno de esta configuracion facilita una
   forma facil de actualizar sus jaulas. Ademas, minimiza la perdida de
   servicio, puesto que las jaulas deben apagarse solamente al final de todo
   el proceso. Se ofrece tambien la posibilidad de volver a la version
   anterior en caso de que algo salga mal.

    1. El primer paso es actualizar el servidor que aloja las jaulas de la
       forma habitual. Despues creamos una plantilla de solo lectura temporal
       en /home/j/mroot2.

 # mkdir /home/j/mroot2
 # cd /usr/src
 # make installworld DESTDIR=/home/j/mroot2
 # cd /home/j/mroot2
 # cpdup /usr/src usr/src
 # mkdir s

       La ejecucion de installworld crea unos cuantos directorios
       innecesarios que debemos borrar:

 # chflags -R 0 var
 # rm -R etc var root usr/local tmp

    2. Creamos de nuevo los enlaces simbolicos de lectura-escritura del
       sistema de ficheros principal:

 # ln -s s/etc etc
 # ln -s s/root root
 # ln -s s/home home
 # ln -s ../s/usr-local usr/local
 # ln -s ../s/usr-X11R6 usr/X11R6
 # ln -s s/tmp tmp
 # ln -s s/var var

    3. Ha llegado el momento de parar las jaulas:

 # /etc/rc.d/jail stop

    4. Desmontamos los sistemas de ficheros originales:

 # umount /home/j/ns/s
 # umount /home/j/ns
 # umount /home/j/mail/s
 # umount /home/j/mail
 # umount /home/j/www/s
 # umount /home/j/www

  Nota:

       Los sistemas de ficheros de lectura-escritura cuelgan del sistema de
       solo lectura /s y por tanto deben desmontarse antes.

    5. Movemos el sistema de ficheros de solo lectura viejo y lo reemplazamos
       por el nuevo. Nos servira de copia de seguridad y como archivo en caso
       de que haya problemas. Para darle un nombre usamos la fecha en la que
       se creado una nueva copia del sistema de ficheros de solo lectura.
       Movemos tambien la Coleccion de Ports de FreeBSD al sistema de
       ficheros nuevo para ahorrar un poco mas de espacio e inodos:

 # cd /home/j
 # mv mroot mroot.20060601
 # mv mroot2 mroot
 # mv mroot.20060601/usr/ports mroot/usr

    6. Una vez llegados a este punto la nueva plantilla de solo lectura esta
       lista, de manera que lo unico que nos queda por hacer es montar los
       sistemas de ficheros y arrancar las jaulas:

 # mount -a
 # /etc/rc.d/jail start

   Compruebe con jls(8) si las jaulas han arrancado sin contratiempos. No
   olvide ejecutar mergemaster en cada jaula. Tendra que actualizar tanto los
   ficheros de configuracion como los scripts rc.d.

     ----------------------------------------------------------------------

   [9] Este paso no es necesario en FreeBSD 6.0 y versiones posteriores.

Capitulo 16. Mandatory Access Control

   Escrito por Tom Rhodes.
   Tabla de contenidos

   16.1. Sinopsis

   16.2. Terminos clave en este capitulo

   16.3. Explicacion de MAC

   16.4. Las etiquetas MAC

   16.5. Configuracion de modulos

   16.6. El modulo MAC ifoff

   16.7. El modulo MAC portacl

   16.8. Politicas de etiquetas MAC

   16.9. El modulo MAC partition

   16.10. El modulo de seguridad multinivel MAC

   16.11. El modulo MAC Biba

   16.12. El modulo MAC LOMAC

   16.13. Implementacion de un entorno seguro con MAC

   16.14. Otro ejemplo: Uso de MAC para restringir un servidor web

   16.15. Depuracion de errores en MAC

16.1. Sinopsis

   Pendiente de Traduccion

16.2. Terminos clave en este capitulo

   Pendiente de traduccion

16.3. Explicacion de MAC

   Pendiente de traduccion

16.4. Las etiquetas MAC

   Pendiente de traduccion

16.5. Configuracion de modulos

   Pendiente de traduccion

16.6. El modulo MAC ifoff

   Pendiente de traduccion

16.7. El modulo MAC portacl

   Pendiente de traduccion

16.8. Politicas de etiquetas MAC

   Pendiente de traduccion

16.9. El modulo MAC partition

   Pendiente de traduccion

16.10. El modulo de seguridad multinivel MAC

   Pendiente de traduccion

16.11. El modulo MAC Biba

   Pendiente de traduccion

16.12. El modulo MAC LOMAC

   Pendiente de traduccion

16.13. Implementacion de un entorno seguro con MAC

   Pendiente de traduccion

16.14. Otro ejemplo: Uso de MAC para restringir un servidor web

   Pendiente de traduccion

16.15. Depuracion de errores en MAC

   Pendiente de traduccion

Capitulo 17. Auditoria de eventos de seguridad

   Escrito por Tom Rhodes y Robert Watson.
   Tabla de contenidos

   17.1. *

17.1. *

   Pendiente de traduccion.

Capitulo 18. Almacenamiento

   Tabla de contenidos

   18.1. Sinopsis

   18.2. Nombres de dispositivo

   18.3. Anadir discos

   18.4. RAID

   18.5. Dispositivos de almacenamiento USB

   18.6. Creacion y uso de medios opticos (CD)

   18.7. Crear y utilizar medios opticos (DVDs)

   18.8. Creacion y uso de disquetes (floppies)

   18.9. Creacion y uso de cintas de datos

   18.10. Respaldos en disquetes

   18.11. Bases para respaldos

   18.12. Sistemas de ficheros en red, memoria y respaldados en fichero

   18.13. Instantaneas ("snapshots") de sistemas de ficheros

   18.14. Cuotas en sistemas de ficheros

   18.15. Cifrado de particiones de disco

18.1. Sinopsis

   Este capitulo trata sobre el uso de discos en FreeBSD. Esto incluye discos
   basados en memoria, discos conectados a traves de la red, dispositivos de
   almacenamiento SCSI/IDE estandar y dispositivos que utilizan el interfaz
   USB.

   Tras leer este capitulo:

     * Conocera la terminologia que se usa en FreeBSD para describir la
       organizacion de datos en un disco fisico (particiones y porciones).

     * Sabra como anadir discos duros a su sistema.

     * Sabra como configurar FreeBSD para utilizar dispositivos de
       almacenamiento USB.

     * Sabra como configurar sistemas virtuales de ficheros, como los discos
       de memoria.

     * Sabra como usar cuotas para limitar el uso del espacio en disco.

     * Sabra como cifrar discos para hacerlos mas seguros ante un atacante.

     * Sabra como se crean y graban los CD y DVD en FreeBSD.

     * Conocera diversas opciones de almacenamiento de copias de seguridad.

     * Sabra como usar diversos programas de respaldo que pueden utilizarse
       en FreeBSD.

     * Sabra como hacer copias de seguridad utilizando disquetes (floppy).

     * Sabra en que consiste una instantanea ("snapshot") y como utilizarla
       de forma eficiente.

   Antes de leer este capitulo:

     * Debe saber como configurar e instalar un nuevo kernel en FreeBSD
       (Capitulo 8, Configuracion del kernel de FreeBSD).

18.2. Nombres de dispositivo

   A continuacion le mostraremos una lista de dispositivos de fisicos
   almacenamiento soportados por FreeBSD y los nombres de dispositivo
   asociados con ellos.

   Tabla 18.1. Convenciones para nombrar discos fisicos

          Tipo de unidad              Nombre de dispositivo de la unidad      
   Discos duros IDE              ad                                           
   Unidades CDROM IDE            acd                                          
   Discos duros SCSI y                                                        
   dispositivos de               da
   almacenamiento masivo USB     
   Unidades CDROM SCSI           cd                                           
   Diferentes tipos de unidades  mcd para CD-ROM Mitsumi, scd para CD-ROM     
   CDROM no estandares           Sony, matcd para CD-ROM Matsushita/Panasonic 
   Unidades de disquete (floppy) fd                                           
   Unidades de cinta SCSI        sa                                           
   Unidades de cinta IDE         ast                                          
   Unidades Flash                fla para dispositivos DiskOnChip(R)          
                                 aacd para Adaptec(R) AdvancedRAID, mlxd y    
   Unidades RAID                 mlyd para Mylex(R), amrd para AMI            
                                 MegaRAID(R), idad para Compaq Smart RAID,    
                                 twed para 3ware(R) RAID.                     

18.3. Anadir discos

   Texto original de David O'Brien.

   Digamos que queremos anadir un nuevo disco SCSI a una maquina que solo
   tiene un disco. Comience por apagar el sistema e instale el disco
   siguiendo las instrucciones del fabricante de la computadora, del disco y
   de la controladora. Debido a la gran variedad de procedimientos posibles
   los detalles estan mas alla del alcance de este texto.

   Entre como usuario root. Una vez instalado el disco inspeccione
   /var/run/dmesg.boot para asegurarse de que el sistema encontro el nuevo
   disco. Continuando con nuestro ejemplo, el disco recien anadido sera da1 y
   queremos montarlo en /1 (si esta anadiendo un disco IDE, el nombre de
   dispositivo sera wd1 en sistemas anteriores a 4.0, y ad1 en sistemas 4.X y
   5.X).

   FreeBSD funciona en computadoras IBM-PC y compatibles, por lo tanto tendra
   en cuenta las particiones de la BIOS del PC, que son diferentes del tipo
   de particion que se ha venido usando en BSD. Un disco para PC puede
   contener hasta cuatro entradas de particiones BIOS. Si el disco va a
   utilizarse integramente con FreeBSD puede usar el modo dedicado. Si no,
   FreeBSD tendra que instalarse dentro de una las particiones BIOS. En
   FreeBSD se llama slices ("porciones" o "rebanadas") a las particiones de
   PC BIOS para no confundirlas con las particiones BSD. Tambien puede
   utilizar slices en un disco dedicado a FreeBSD pero que se esta usando en
   un sistema que tambien tiene otro sistema operativo instalado. Esta es una
   buena manera de evitar confundir la version de fdisk de otros sistemas
   operativos.

   Desde el punto de vista de las slices el disco se anadira como
   /dev/da1s1e. Se interpreta del siguiente modo: disco SCSI, unidad numero 1
   (segundo disco SCSI), slice 1 (particion 1 de PC BIOS), y particion BSD e.
   Si es un disco dedicado, el disco se anadira como /dev/da1e.

   Debido al uso de enteros de 32-bits para almacenar el numero de sectores,
   bsdlabel(8) (llamado disklabel(8) en FreeBSD 4.X) esta limitado a 2^32-1
   sectores por disco o 2TB (en la mayoria de los casos). El formato de
   fdisk(8) permite un sector de arranque de un maximo de mas de 2^32-1 y no
   mas de 2^32-1 de longitud, limitando las particiones a 2TB y los discos a
   4TB (tambien en la mayoria de los casos). El formato sunlabel(8) tiene una
   limitacion de 2^32-1 sectores por particion y 8 particiones en un espacio
   maximo de 16TB. Si va a usar discos mayores puede usar particiones gpt(8).

  18.3.1. Uso de sysinstall(8)

    1. Navegar en Sysinstall

       Puede utilizar sysinstall (/stand/sysinstall en versiones de FreeBSD
       anteriores a 5.2) para particionar y etiquetar un disco nuevo usando
       sus intuitivos menus. Entre como el usuario root o utilice su. Ejecute
       sysinstall y entre al menu Configure. Dentro de FreeBSD Configuration
       Menu, descienda y seleccione la opcion Fdisk.

    2. Editor de particiones fdisk

       Una vez dentro de fdisk, teclee A si quiere usar el disco entero con
       FreeBSD Cuando se le pregunte "remain cooperative with any future
       possible operating systems" [10], responda YES. Escriba los cambios al
       disco pulsando W. Salga del editor FDISK pulsando q. A continuacion se
       le preguntara sobre el "Master Boot Record". Debido a que esta
       anadiendo un nuevo disco a un sistema que ya esta instalado, tendra
       que seleccionar None.

    3. Editor de etiquetas de disco

       A continuacion, debe salir de sysinstall e iniciarlo de nuevo. Siga
       las instrucciones arriba expuestas, pero esta vez elija la opcion
       Label. De este modo accedera al editor de etiquetas de disco. En el
       creara las particiones BSD tradicionales. Un disco puede tener hasta
       ocho particiones, etiquetadas desde la a a la h. Algunas de las
       etiquetas de las particiones tienen usos especiales. La particion a se
       utiliza para la particion raiz (/), por lo tanto solo su disco de
       sistema (esto es, el disco desde el cual arranca) tendra una particion
       a. La particion b se usa como particion swap; puede tener mas de una
       particion swap y puede alojarlas en mas de un disco. La particion c
       hace referencia al disco entero en modo dedicado, o a la slice de
       FreeBSD completa en modo slice. Las demas particiones son para el
       resto de los usos tipicos.

       El editor de etiquetas de sysinstall creara la particion e como
       particion "ni raiz, ni swap". En el editor de etiquetas cree un solo
       sistema de ficheros tecleando C. Cuando se le pregunte si debe
       etiquetarse como FS (sistema de ficheros) o swap, elija FS y teclee un
       punto de montaje (por ejemplo /mnt). Al anadir un disco en modo
       "post-instalacion" sysinstall no creara automaticamente las entradas
       correspondientes en /etc/fstab, por lo que el punto de montaje que
       usted especifique no tiene importancia.

       Ahora puede escribir la nueva etiqueta al disco y crear un sistema de
       ficheros en el tecleando W. Ignore cualquier error que pudiera generar
       sysinstall acerca de dificultades para montar la nueva particion.
       Salga del editor de etiquetas y de sysinstall.

    4. Terminar

       El ultimo paso es editar /etc/fstab y anadir una entrada para su nuevo
       disco.

  18.3.2. Uso de utilidades de linea de comandos

    18.3.2.1. Uso de slices

   Esta configuracion le permitira a su disco convivir sin sobresaltos con
   otro sistema operativo que pueda estar instalado en su sistema y no
   confundira a las utilidades fdisk de esos otros sistemas operativos. Se
   recomienda utilizar este metodo para instalar discos nuevos. Utilice el
   modo dedicado solamente si tiene un buen motivo para hacerlo.

 # dd if=/dev/zero of=/dev/da1 bs=1k count=1
 # fdisk -BI da1 #Initialice el nuevo disco.
 # disklabel -B -w -r da1s1 auto #Etiquetelo.
 # disklabel -e da1s1 # Edite la etiqueta de disco que acaba de crear y anada particiones.
 # mkdir -p /1
 # newfs /dev/da1s1e # Repita este paso por cada particion que cree.
 # mount /dev/da1s1e /1 # Monte la particion o particiones.
 # vi /etc/fstab # Anada la/s entrada/s apropiadas en /etc/fstab.

   Si tiene un disco IDE, sustituya ad por da. En sistemas anteriores a 4.X
   utilice wd.

    18.3.2.2. Dedicado

   Si no va a compartir el nuevo disco con otro sistema operativo puede
   utilizar el modo dedicado. Recuerde que este modo puede confundir a los
   sistemas operativos de Microsoft, aunque no podran danar por ello el disco
   o su contenido. Tenga en cuenta que FreeBSD (de IBM) se "apropiara" de
   cualquier particion que encuentre y no entienda.

 # dd if=/dev/zero of=/dev/da1 bs=1k count=1
 # disklabel -Brw da1 auto
 # disklabel -e da1                              # crear particion `e'
 # newfs -d0 /dev/da1e
 # mkdir -p /1
 # vi /etc/fstab                         # agregar una entrada para /dev/da1e
 # mount /1

   Una forma alternativa de hacerlo seria:

 # dd if=/dev/zero of=/dev/da1 count=2
 # disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin
 # newfs /dev/da1e
 # mkdir -p /1
 # vi /etc/fstab                                 # anadir una entrada para /dev/da1e
 # mount /1

  Nota:

   A partir de FreeBSD 5.1-RELEASE, la utilidad bsdlabel(8) reemplazo al
   antiguo programa disklabel(8). En bsdlabel(8) se han eliminado muchos
   parametros y opciones obsoletas; en los ejemplos de arriba la opcion -r
   debe eliminarse si se usa bsdlabel(8). Para mas informacion dirijase al
   manual de bsdlabel(8).

18.4. RAID

  18.4.1. Software RAID

    18.4.1.1. Configuracion de controlador de disco concatenado (CCD)

   Texto original de Christopher Shumway.
   Revisado por Jim Brown.

   Al escoger una solucion de almacenamiento masivo los factores mas
   importantes a considerar son velocidad, fiabilidad y coste. Es raro tener
   los tres por igual; normalmente un dispositivo de almacenamiento masivo
   veloz y fiable es caro, y para recortar los costes suele sacrificarse la
   velocidad o la fiabilidad.

   Al disenar el sistema descrito mas adelante se eligio el coste como el
   factor mas importante, seguido de la velocidad, y luego la fiabilidad. La
   velocidad de transferencia de datos para este sistema esta, en ultima
   instancia, limitada por la red. Y mientras que la confiabilidad es muy
   importante, el controlador CCD descrito mas adelante sirve datos que estan
   respaldados en CD-R y pueden ser reemplazados sin dificultad.

   Al escoger una solucion de almacenamiento masivo el primer paso es definir
   sus necesidades. Si prefiere velocidad o fiabilidad por encima del coste,
   el resultado sera distinto del que vamos a describir en esta seccion.

      18.4.1.1.1. Instalacion del hardware

   Ademas del disco IDE, el nucleo del disco CCD esta compuesto por tres
   discos IDE discos IDE Western Digital de 30GB y 5400 RPM, que ofrecen
   aproximadamente 90GB de almacenamiento. Lo ideal seria que cada disco IDE
   tuviera su propio cable y controlador, pero para minimizar costes no se
   utilizaron controladores IDE adicionales. En lugar de eso se configuraron
   los discos con "jumpers" para que cada controlador IDE tuviera un maestro
   y un esclavo.

   Despues de reiniciar la BIOS se configuro para que detectara
   automaticamente los discos conectados. FreeBSD los detecto al reiniciar:

 ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
 ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
 ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
 ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33

  Nota:

   Si FreeBSD no detecta todos los discos asegurese de que ha colocado
   correctamente los "jumpers". La mayoria de los discos IDE tienen un
   "jumper" "Cable Select". Este no es el "jumper" que define la relacion
   maestro/esclavo. Consulte la documentacion del disco para identificar el
   "jumper" correcto.

   El siguiente paso es estudiar como conectarlos para que formen parte del
   sistema de ficheros. Investigue Debe investigar vinum(8) (Capitulo 20, El
   Gestor de Volumenes Vinum) y ccd(4). Nosotros elegimos ccd(4) para nuestra
   configuracion.

      18.4.1.1.2. Configuracion de CCD

   El controlador ccd(4) le permite tomar varios discos identicos y
   concatenarlos en un solo sistema logico de ficheros. Para poder usar
   ccd(4) necesita un kernel compilado con soporte de ccd(4). Anada esta
   linea al fichero de configuracion de su kernel, recompile y reinstale su
   kernel:

 pseudo-device   ccd     4

   En sistemas 5.X, use la siguiente linea:

 device   ccd

  Nota:

   En FreeBSD 5.X no es necesario especificar un numero de dispositivos
   ccd(4), ya que el controlador de dispositivo ccd(4) es capaz de clonarse a
   si mismo (se crearan nuevas instancias de dispositivo automaticamente
   segun vayan haciendo falta).

   El soporte de ccd(4) tambien puede cargarse como modulo en FreeBSD 3.0 y
   posteriores.

   Para configurar ccd(4) tendra que usar disklabel(8) para etiquetar los
   discos:

 disklabel -r -w ad1 auto
 disklabel -r -w ad2 auto
 disklabel -r -w ad3 auto

   Esto crea una etiqueta de disco para ad1c, ad2c y ad3c que abarcan el
   disco completo.

  Nota:

   A partir de FreeBSD 5.1-RELEASE bsdlabel(8) reemplazo al antiguo programa
   disklabel(8). En bsdlabel(8) se eliminaron muchas opciones y parametros
   obsoletos; en los ejemplos de arriba la opcion -r deben obviarse. Para mas
   informacion consulte bsdlabel(8).

   El siguiente paso es cambiar el tipo de etiqueta de disco. Edite los
   discos con disklabel(8):

 disklabel -e ad1
 disklabel -e ad2
 disklabel -e ad3

   Esto abre la etiqueta de disco de cada disco con el editor declarado en la
   variable de entorno EDITOR, por defecto vi(1).

   Esta es una etiqueta de disco sin modificar:

 8 partitions:
 #        size   offset    fstype   [fsize bsize bps/cpg]
   c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)

   ccd(4) necesita que anada una nueva particion e. Puede copiarla desde la
   particion c, pero el tipo de sistema de ficheros (la opcion fstype) debe
   ser 4.2BSD. La etiqueta del disco deberia tener este aspecto:

 8 partitions:
 #        size   offset    fstype   [fsize bsize bps/cpg]
   c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)
   e: 60074784        0    4.2BSD        0     0     0   # (Cyl.    0 - 59597)

      18.4.1.1.3. Contruccion del sistema de ficheros

   Puede que todavia no exista el nodo de dispositivo para ccd0c. Si es asi,
   ejecute lo siguiente:

 cd /dev
 sh MAKEDEV ccd0

  Nota:

   En FreeBSD 5.0 devfs(5) administrara automaticamente los nodos de
   dispositivos en /dev, asi que no tendra que usar MAKEDEV.

   Una vez etiquetados todos los discos construya el ccd(4). Utilice
   ccdconfig(8) con opciones similares a las siguientes:

 ccdconfig ccd01 322 03 /dev/ad1e4 /dev/ad2e /dev/ad3e

   El uso y el significado de cada una de las opciones se muestra mas abajo:

   1 El primer argumento es el dispositivo a configurar, en este caso         
     /dev/ccd0c. La parte /dev/ es opcional.                                  
   2 El intervalo para el sistema de ficheros. El intervalo define el tamano  
     de una banda en bloques de disco, normalmente 512 bytes. Por lo tanto,   
     un intervalo de 32 equivaldria 16.384 bytes.                             
   3 Banderas para ccdconfig(8). Si desea disponer sus discos en espejo use   
     aqui una bandera. Esta configuracion no necesita discos en espejo, por   
     lo que esta dispuesta a 0 (cero).                                        
   4 Los ultimos argumentos de ccdconfig(8) son los dispositivos a colocar en 
     el array. Utilice la ruta completa para cada dispositivo.                

   Despues de ejecutar ccdconfig(8) el ccd(4) estara configurado y podra
   instalar un sistema de ficheros. Consulte las opciones de newfs(8) y
   ejecute:

 newfs /dev/ccd0c

      18.4.1.1.4. Automatizacion

   Seguramente querra que ccd(4) este dispuesto tras cada reinicio. Para
   ello, debe configurarlo. Guarde su configuracion en /etc/ccd.conf mediante
   lo siguiente:

 ccdconfig -g > /etc/ccd.conf

   Durante el reinicio, el "script" /etc/rc ejecuta ccdconfig -C si encuentra
   el fichero /etc/ccd.conf. De este modo ccd(4) queda configurado
   automaticamente para que pueda montarse.

  Nota:

   Si ha arrancando en modo mono usuario necesita ejecutar el siguiente
   comando antes de que pueda montar el ccd(4) para configurar el array:

 ccdconfig -C

   Para montar automaticamente el ccd(4) coloque una entrada para ccd(4) en
   /etc/fstab para que se monte durante el arranque:

 /dev/ccd0c              /media       ufs     rw      2       2

    18.4.1.2. El administrador de volumenes Vinum

   El administrador de volumenes Vinum es un controlador de dispositivos de
   bloque que implementa unidades de disco virtuales. Aisla los discos
   hardware de la interfaz de dispositivos de bloque y mapea datos de modo
   que revierta en un incremento de flexibilidad, rendimiento y fiabilidad
   comparados con el sistema de slices de almacenamiento de disco
   tradicional. vinum(8) implementa los modelos RAID-0, RAID-1 y RAID-5,
   individualmente o combinados.

   Consulte el Capitulo 20, El Gestor de Volumenes Vinum para mayor
   informacion sobre vinum(8).

  18.4.2. RAID por Hardware

   FreeBSD admite una gran variedad de controladores RAID por hardware. Estos
   dispositivos controlan un subsistema RAID sin necesidad de software
   especifico para FreeBSD que administre el array.

   Puede controlar la mayoria de las operaciones de disco con una tarjeta que
   incorpore BIOS. El siguiente texto es una breve descripcion de
   configuracion utilizando una controladora Promise RAID IDE. Cuando se
   instala esta tarjeta e inicia el sistema despliega un "prompt" pidiendo
   informacion. Siga las instrucciones para entrar a la pantalla de
   configuracion de la tarjeta. Ahi tendra posibilidad de combinar todos los
   discos que haya conectado. Hecho esto el disco (o discos) apareceran como
   una sola unidad en FreeBSD. Pueden configurarse otros niveles de RAID.

  18.4.3. Reconstruccion de arrays ATA RAID1

   FreeBSD le permite reemplazar en caliente un disco danado. Esto requiere
   que lo intercepte antes de reiniciar.

   Probablemente vea algo como lo siguiente en /var/log/messages o en la
   salida de dmesg(8):

 ad6 on monster1 suffered a hard error.
 ad6: READ command timeout tag=0 serv=0 - resetting
 ad6: trying fallback to PIO mode
 ata3: resetting devices .. done
 ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\
 status=59 error=40
 ar0: WARNING - mirror lost

   Consulte atacontrol(8) para mas informacion:

 # atacontrol list
 ATA channel 0:
         Master:      no device present
         Slave:   acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0

 ATA channel 1:
         Master:      no device present
         Slave:       no device present

 ATA channel 2:
         Master:  ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
         Slave:       no device present

 ATA channel 3:
         Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
         Slave:       no device present

 # atacontrol status ar0
 ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED

    1. Primero debe desconectar el disco del array para que pueda retirarlo
       con seguridad:

 # atacontrol detach 3

    2. Reemplace el disco.

    3. Conecte el disco de repuesto:

 # atacontrol attach 3
 Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
 Slave:   no device present

    4. Reconstruya el array:

 # atacontrol rebuild ar0

    5. El comando de reconstruccion no respondera hasta que termine la tarea.
       Puede abrir otra terminal (mediante Alt+Fn) y revisar el progreso
       ejecutando lo siguiente:

 # dmesg | tail -10
 [texto eliminado]
 ad6: removed from configuration
 ad6: deleted from ar0 disk1
 ad6: inserted into ar0 disk1 as spare

 # atacontrol status ar0
 ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed

    6. Espere hasta que termine la operacion.

18.5. Dispositivos de almacenamiento USB

   Texto de Marc Fonvieille.

   Hoy dia hay una enorme cantidad de soluciones de almacenamiento externoque
   usan el bus serie universal (USB): discos duros, "mecheros" (o "lapices")
   USB, grabadoras de CD-R, etc. FreeBSD puede usar estos dispositivos.

  18.5.1. Configuracion

   El controlador de dispositivos de almacenamiento masivo USB, umass(4),
   ofrece soporte para dispositivos de almacenamiento USB. Si usa el kernel
   GENERIC no necesita cambiar nada en su configuracion. Si utiliza un kernel
   personalizado asegurese de que su fichero de configuracion del kernel
   contiene las siguientes lineas:

 device scbus
 device da
 device pass
 device uhci
 device ohci
 device usb
 device umass

   El controlador umass(4) usa el subsistema SCSI para acceder a los
   dispositivos de almacenamiento USB y su dispositivo USB aparecera en el
   sistema como dispositivo SCSI. Dependiendo del chipset USB de su placa
   base solamente necesitara device uhci o device ohci; en cualquier caso
   tener los dos en el fichero de configuracion del kernel no provocara
   ningun dano. No olvide compilar e instalar el nuevo kernel si hizo alguna
   modificacion.

  Nota:

   Si su dispositivo USB es una grabadora CD-R o DVD el controlador SCSI
   CD-ROM, cd(4), debe ser anadirse al kernel mediante la siguiente linea:

 device cd

   Dado que la grabadora aparece como una unidad SCSI no tiene que usar el
   controlador atapicam(4) en la configuracion del kernel.

   En FreeBSD 5.X y en la rama 4.X desde FreeBSD 4.10-RELEASE el soporte para
   controladores USB 2.0 se incorpora al sistema del siguiente modo:

 device ehci

   Tenga en cuenta que uhci(4) y ohci(4) siguen siendo necesarios si quiere
   disponer de soporte para USB 1.X.

  Nota:

   En FreeBSD 4.X, El daemon USB (usbd(8)) debe ejecutarse para poder ver
   ciertos tipos de dispositivo USB. Para habilitarlo, anada
   usbd_enable="YES" en /etc/rc.conf y reinicie la maquina.

  18.5.2. Prueba de la configuracion

   La configuracion esta lista para probarse: conecte su dispositivo USB; en
   el bufer de mensajes del sistema (dmesg(8)), la unidad debe aparecer como
   algo similar a esto:

 umass0: USB Solid state disk, rev 1.10/1.00, addr 2
 GEOM: create disk da0 dp=0xc2d74850
 da0 at umass-sim0 bus 0 target 0 lun 0
 da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device
 da0: 1.000MB/s transfers
 da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C)

   Obviamente la marca, el nodo de dispositivo (da0) y otros detalles pueden
   diferir dependiendo de su hardware.

   Ya que el dispositivo USB aparece como uno SCSI, puede usar camcontrol
   para ver una lista de dispositivos USB conectados al sistema:

 # camcontrol devlist
 <Generic Traveling Disk 1.11>      at scbus0 target 0 lun 0 (da0,pass0)

   Si la unidad tiene un sistema de ficheros puede montarla. La Seccion 18.3,
   "Anadir discos" contiene informacion que le resultara muy util para
   formatear y crear particiones en el disco USB en caso de necesitarlo.

   Si desconecta el dispositivo (el disco debe desmontarse previamente),
   deberia ver en el bufer de mensajes del sistema algo parecido a esto:

 umass0: at uhub0 port 1 (addr 2) disconnected
 (da0:umass-sim0:0:0:0): lost device
 (da0:umass-sim0:0:0:0): removing device entry
 GEOM: destroy disk da0 dp=0xc2d74850
 umass0: detached

  18.5.3. Lecturas recomendadas

   Ademas de las secciones Como anadir discos y Montado y desmontado de
   sistemas ficheros, consulte las siguientes paginas man: umass(4),
   camcontrol(8) y usbdevs(8).

18.6. Creacion y uso de medios opticos (CD)

   Texto de Mike Meyer.

  18.6.1. Introduccion

   Los CD tienen muchas opciones que los hacen distintos de los discos
   convencionales. Al principio los usuarios no podian escribirlos. Su diseno
   permite que leamos en ellos sin el retardo del movimiento de una cabeza
   lectora de una pista a otra. Tambien son mucho mas faciles de transportar
   de un sistema a otro que muchos otros soportes de informacion.

   Los CD tienen pistas, pero son una seccion de los que permiten lectura
   continua, no una propiedad fisica del disco. Para crear un CD en FreeBSD
   debe preparar los ficheros de datos que van a constituir las pistas del CD
   y luego escribir las pistas al CD.

   El sistema de ficheros ISO 9660 se diseno para gestionar estas
   diferencias. Por desgracia implementa limites de sistema de ficheros que
   eran comunes en la epoca en que se diseno. Por suerte tambien proporciona
   un mecanismo de extensiones que permite que CD escritos excediendo dichos
   limites funcionen en sistemas que no soportan esas extensiones.

   El port sysutils/cdrtools incluye mkisofs(8), un programa que le permitira
   crear un fichero de datos que contenga un sistema de ficheros ISO 9660.
   Incorpora opciones que soportan varias extensiones. Se describe mas
   adelante.

   Que herramienta usar para grabar el CD depende de si su grabadora es ATAPI
   o no. Las grabadoras de CD ATAPI usan el programa burncd, que forma parte
   del sistema base. Las grabadoras SCSI y USB usan cdrecord, del port
   sysutils/cdrtools.

   burncd no soporta cualquier unidad de grabacion. Para saber si una unidad
   esta soportada consulte la siguiente lista de unidades CD-R/RW soportadas.

  Nota:

   Si utiliza FreeBSD 5.X, FreeBSD 4.8-RELEASE o posteriores, puede utilizar
   cdrecord y otras herramientas para unidades SCSI en hardware ATAPI con el
   modulo ATAPI/CAM.

   Si quiere usar un interfaz grafico con su software de grabacion de CD
   quizas le guste X-CD-Roast o K3b. Puede instalar estas herramientas como
   paquetes o desde los ports sysutils/xcdroast y sysutils/k3b,
   respectivamente. X-CD-Roast y K3b requieren el modulo ATAPI/CAM si usa
   hardware ATAPI.

  18.6.2. mkisofs

   El programa mkisofs(8) (que forma parte del port sysutils/cdrtools) genera
   un sistema de ficheros ISO 9660 que es una imagen de un arbol de
   directorios en el espacio de nombres del sistema de ficheros UNIX(R). Esta
   es la forma mas simple de usarlo:

 # mkisofs -o ficherodeimagen.iso /ruta/del/arbol

   Este comando creara un ficherodeimagen.iso que contenga un sistema de
   ficheros ISO 9660 que es una copia del arbol ubicado en /ruta/al/arbol. En
   el proceso, mapeara los nombres de fichero a nombres que se ajusten a las
   limitaciones del estandar del sistema de ficheros ISO 9660, y excluira
   ficheros que posean nombres no caracteristicos de sistemas de ficheros
   ISO.

   Existe gran cantidad de opciones que permiten superar esas restricciones.
   En particular, -R habilita las extensiones Rock Ridge comunes para
   sistemas UNIX(R), -J habilita las extensiones Joliet usadas por sistemas
   Microsoft y -hfs puede usarse para crear sistemas de ficheros utilizados
   por Mac OS(R).

   Puede utilizar -U para deshabilitar todas las restricciones de nombres de
   fichero si quiere crear un CD que se vaya a usar exclusivamente en
   sistemas FreeBSD. Cuando se usa con -R produce una imagen de sistema de
   ficheros que es identica al arbol FreeBSD origen, aunque puede violar el
   estandar ISO 9660 de multiples formas.

   La ultima opcion de uso general es -b. Se usa para configurar la ubicacion
   de la imagen de arranque que se usara al crear un CD arrancable "El
   Torito". Esta opcion usa como argumento la ruta a la imagen de arranque
   desde la raiz del arbol de directorios que se va a escribir en el CD. Por
   defecto mkisofs(8) crea una imagen ISO en un modo llamado "de emulacion de
   disquete (floppy)", y por lo tanto espera que la imagen de arranque sea
   exactamente de 1.200, 1.440 o 2880 KB de tamano. Algunos cargadores de
   arranque, como el que se usa en los discos de la distribucion FreeBSD, no
   utilizan modo de emulacion: se usa la opcion -no-emul-boot. Por tanto, si
   /tmp/miarranque tiene un sistema FreeBSD arrancable con la imagen de
   arranque en /tmp/miarranque/boot/cdboot podria crear la imagen en un
   sistema de ficheros ISO 9660 en /tmp/arrancable.iso de la siguiente
   manera:

 # mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/arrancable.iso /tmp/miarranque

   Hecho esto, si tiene vn (FreeBSD 4.X), o md (FreeBSD 5.X) configurado en
   su kernel, puede montar el sistema de ficheros del siguiente modo:

 # vnconfig -e vn0c /tmp/arrancable.iso
 # mount -t cd9660 /dev/vn0c /mnt

   En FreeBSD 4.X y FreeBSD 5.X proceda del siguiente modo:

 # mdconfig -a -t vnode -f /tmp/arrancable.iso -u 0
 # mount -t cd9660 /dev/md0 /mnt

   Ahora puede verificar que /mnt y /tmp/miarranque sean identicos.

   Existen muchas otras opciones que puede usar para depurar el
   comportamiento de mkisofs(8), sobre todo en lo que se refiere al esquema
   ISO 9660 y la creacion de discos Joliet y HFS. Consulte el manual de
   mkisofs(8).

  18.6.3. burncd

   Si tiene una grabadora ATAPI puede usar burncd para grabar una imagen ISO
   en un CD. burncd forma parte del sistema base, y esta en /usr/sbin/burncd.
   Su uso es muy sencillo, ya que tiene pocas opciones:

 # burncd -f unidaddecd data ficheroimagen.iso fixate

   Esto grabara una copia de ficheroimagen.iso en unidadcd. El dispositivo
   por defecto es /dev/acd0 (o /dev/acd0c en FreeBSD 4.X). Consulte burncd(8)
   para ver las opciones de configuracion de velocidad de escritura,
   expulsion de CD una vez grabado, y escritura de datos de audio.

  18.6.4. cdrecord

   Si no dispone de una grabadora ATAPI de CD, tendra que usar cdrecord para
   grabar sus CD. cdrecord no forma parte del sistema base; instalelo desde
   el port sysutils/cdrtools o como paquete. Los cambios en el sistema base
   pueden hacer que las versiones binarias del programa fallen. Tendra que
   actualizar el port cuando actualice su sistema o, si esta siguiendo la
   rama -STABLE, actualizar el port cuando haya una nueva version disponible.

   Aunque cdrecord tiene muchas opciones, el uso basico es incluso mas simple
   que el de burncd. Asi se graba una imagen ISO 9660:

 # cdrecord dev=dispositivo ficheroimagen.iso

   La parte complicada de utilizar cdrecord es encontrar que dev usar.
   Utilice la bandera -scanbus para dar con la configuracion apropiada. La
   salida sera parecida a la siguiente:

 # cdrecord -scanbus
 Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jo:rg Schilling
 Using libscg version 'schily-0.1'
 scsibus0:
         0,0,0     0) 'SEAGATE ' 'ST39236LW       ' '0004' Disk
         0,1,0     1) 'SEAGATE ' 'ST39173W        ' '5958' Disk
         0,2,0     2) *
         0,3,0     3) 'iomega  ' 'jaz 1GB         ' 'J.86' Removable Disk
         0,4,0     4) 'NEC     ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
         0,5,0     5) *
         0,6,0     6) *
         0,7,0     7) *
 scsibus1:
         1,0,0   100) *
         1,1,0   101) *
         1,2,0   102) *
         1,3,0   103) *
         1,4,0   104) *
         1,5,0   105) 'YAMAHA  ' 'CRW4260         ' '1.0q' Removable CD-ROM
         1,6,0   106) 'ARTEC   ' 'AM12S           ' '1.06' Scanner
         1,7,0   107) *

   Esta lista muestra los valores dev apropiados para los dispositivos de la
   lista. Localice su grabadora de CD y utilice los tres numeros separados
   por comas como valor para dev. En este caso, el dispositivo CDW es 1,5,0 y
   por tanto la entrada apropiada seria dev=1,5,0. Hay modos mas faciles de
   especificar este valor; consulte cdrecord(1) para mas detalles. Tambien es
   el lugar donde buscar informacion sobre la escritura de pistas de audio,
   controlar la velocidad de escritura y muchas mas cosas.

  18.6.5. Copiar CD de audio

   Puede duplicar un CD de audio extrayendo los datos de audio del CD a
   ficheros y escribir estos ficheros en un CD virgen. El proceso es
   ligeramente diferente en unidades ATAPI y SCSI.

   Procedimiento 18.1. Unidades SCSI
    1. Use cdda2wav para extraer el audio.

 % cdda2wav -v255 -D2,0 -B -Owav

    2. Use cdrecord para escribir los ficheros .wav.

 % cdrecord -v dev=2,0 -dao -useinfo  *.wav

       Asegurese de que 2,0 este configurado apropiadamente, como se describe
       en la Seccion 18.6.4, "cdrecord".

   Procedimiento 18.2. Unidades ATAPI
    1. El controlador de CD ATAPI hace que cada pista sea accesible como
       /dev/acddtnn, donde d es el numero de unidad y nn es el numero de
       pista expresado con dos digitos decimales, precedido por un cero si es
       necesario. La primera pista del primer disco es /dev/acd0t01, la
       segunda es /dev/acd0t02, la tercera es /dev/acd0t03 y asi
       sucesivamente.

       Asegurese de que existen los ficheros apropiados en /dev.

 # cd /dev
 # sh MAKEDEV acd0t99

  Nota:

       En FreeBSD 5.0 devfs(5) creara y gestionara automaticamente las
       entradas necesarias en /dev, asi que no sera necesario usar MAKEDEV.

    2. Extraer cada pista con dd(1). Tambien debera declarar un tamano
       especifico de bloque al extraer los ficheros.

 # dd if=/dev/acd0t01 of=pista1.cdr bs=2352
 # dd if=/dev/acd0t02 of=pista2.cdr bs=2352
 ...

    3. Grabar los ficheros extraidos a disco con burncd. Debe declarar que
       son ficheros de audio y que burncd debe cerrar ("fixate") el disco al
       terminar la grabacion.

 # burncd -f /dev/acd0 audio pista1.cdr pista2.cdr ... fixate

  18.6.6. Duplicar CDs de datos

   Puede copiar un CD de datos a un fichero de imagen que sera funcionalmente
   equivalente al fichero de imagen creado con mkisofs(8), y puede usarlo
   para duplicar cualquier CD de datos. El ejemplo dado aqui asume que su
   dispositivo CDROM es acd0. Sustituyalo por el dispositivo CDROM correcto
   para su configuracion. Bajo FreeBSD 4.X, se debe anadir una c al final del
   nombre del dispositivo para indicar la particion entera o, en el caso de
   los CDROM, el disco entero.

 # dd if=/dev/acd0 of=fichero.iso bs=2048

   Hecha la imagen puede garbarla en un CD como se describio anteriormente.

  18.6.7. Uso de CD de datos

   Ahora que ha creado un CDROM de datos estandar tal vez quiera montarlo y
   leer los datos que contiene. Por defecto mount(8) asume que los sistemas
   de ficheros son de tipo ufs. Si trata de hacer algo como

 # mount /dev/cd0 /mnt

   recibira un error como este: Incorrect super block y no se montara. Un
   CDROM no es un sistema de ficheros UFS asi que los intentos de montarlo
   como tal fallaran. Tendra que decirle a mount(8) que el sistema de
   ficheros es de tipo ISO9660 y funcionara. Puede hacerlo mediante la opcion
   -t cd9660. Por ejemplo, si quiere montar el dispositivo CDROM /dev/cd0 en
   /mnt ejecute:

 # mount -t cd9660 /dev/cd0 /mnt

   Tenga en cuenta que el nombre de su dispositivo (/dev/cd0 en este ejemplo)
   puede ser diferente, dependiendo de la interfaz que su CDROM utilice.
   Ademas la opcion -t cd9660 solo ejecuta mount_cd9660(8). El ejemplo de
   arriba puede resumirse del siguiente modo:

 # mount_cd9660 /dev/cd0 /mnt

   En general puede usar CDROM de datos de cualquier fabricante, aunque los
   discos con ciertas extensiones ISO 9660 pueden mostrar un comportamiento
   extrano. Por ejemplo, los discos Joliet almacenan todos los nombres de
   fichero en caracteres unicode de dos-bytes. El kernel de FreeBSD no
   comprende unicode (todavia) asi que los caracteres que no estan en ingles
   aparecen como signos de interrogacion. (Si utiliza FreeBSD 4.3 o alguna
   version posterior, el controlador CD9660 incluye unas estructuras llamadas
   "ganchos", que le permitiran cargar una tabla de conversion unicode
   apropiada cuando haga falta. Hay modulos para algunas de las
   codificaciones mas comunes en el port sysutils/cd9660_unicode.)

   Es posible que reciba un error Device not configured al tratar de montar
   un CDROM. Generalmente esto significa que la unidad de CDROM piensa que no
   hay disco en la bandeja, o que la unidad no es visible en el bus. Puede
   llevar un par de segundos el que una unidad de CDROM se de cuenta de que
   ha sido alimentada, por lo tanto sea paciente.

   Algunas veces un CDROM SCSI puede "perdido" debido a que no tuvo tiempo
   suficiente para responder al reset del bus. Si tiene un CDROM SCSI anada
   la siguiente opcion a su fichero de configuracion del kernel y recompile
   su kernel.

 options SCSI_DELAY=15000

   Esto le indica a su bus SCSI que haga una pausa de 15 segundos durante el
   arranque para darle ocasion a su unidad de CDROM de responder al reset del
   bus.

  18.6.8. Grabar CD de datos "crudos" (Raw)

   Puede guardar un fichero directamente a CD sin crear un sistema de
   ficheros ISO 9660. Algunas personas hacen esto al crear respaldos. Es un
   proceso mas rapido que grabar un CD estandar:

 # burncd -f /dev/acd1 -s 12 data fichero.tar.gz fixate

   Para recuperar los datos guardardados de este modo en un CD, debe leer los
   datos desde el nodo de dispositivo "crudo":

 # tar xzvf /dev/acd1

   No puede montar este disco como lo haria con un CDROM normal. Estos CDROM
   no pueden leerse en ningun sistema operativo que no sea FreeBSD. Si quiere
   montar el CD o compartir los datos con otro sistema operativo debe
   utilizar mkisofs(8) como se describio previamente.

  18.6.9. Uso del controlador ATAPI/CAM

   Original de Marc Fonvieille.

   Este controlador permite que dispositivos ATAPI (CD-ROM, CD-RW, unidades
   DVD, etc) sean accesibles a traves del subsistema SCSI y por lo tanto
   permite el uso de aplicaciones como sysutils/cdrdao o cdrecord(1).

   Para usar este controlador necesitara anadir la siguiente linea al fichero
   de configuracion de su kernel:

 device atapicam

   Es posible que necesite tambien las siguientes lineas en el fichero de
   configuracion de su kernel:

 device ata
 device scbus
 device cd
 device pass

   (que, por otra parte, ya deberin estar presentes).

   Recompile, instale su nuevo kernel y reinicie su maquina. Durante el
   proceso de arranque su grabadora debe ser detectada; veamos un ejemplo:

 acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4
 cd0 at ata1 bus 0 target 0 lun 0
 cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device
 cd0: 16.000MB/s transfers
 cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed

   Puede acceder a la unidad a traves del del nombre de dispositivo /dev/cd0;
   por ejemplo, para montar un CDROM en /mnt, teclee lo siguiente:

 # mount -t cd9660 /dev/cd0 /mnt

   Como root, puede ejecutar el siguiente comando para obtener las
   direcciones SCSI del dispositivo:

 # camcontrol devlist
 <MATSHITA CDRW/DVD UJDA740 1.00>   at scbus1 target 0 lun 0 (pass0,cd0)

   Segun esto, 1,0,0 sera la direccion SCSI a utilizar con cdrecord(1) y
   otras aplicaciones SCSI.

   Para mayor informacion sobre sistemas ATAPI/CAM y SCSI, dirijase a las
   paginas de manual atapicam(4) y cam(4).

18.7. Crear y utilizar medios opticos (DVDs)

   Texto de Marc Fonvieille.
   Con colaboraciones de Andy Polyakov.

  18.7.1. Introduccion

   Comparado con el CD, el DVD es la nueva generacion de tecnologia de
   almacenamiento en medios opticos. El DVD puede almacenar mas datos que
   cualquier CD y hoy dia es el estandar para publicacion de video.

   Se pueden definir cinco formatos de grabacion para lo que llamamos un DVD
   grabable:

     * DVD-R: Este fue el primer formato de grabacion de DVD. El DVD-R
       estandar fue definido por el DVD Forum. Este formato es de una sola
       escritura.

     * DVD-RW: Esta es la version reescribible del DVD-R estandar. Un DVD-RW
       puede reescribirse unas 1.000 veces.

     * DVD-RAM: Este es tambien un formato reescribible soportado por el DVD
       Forum. Un DVD-RAM puede verse como un disco duro extraible. Este medio
       no es compatible con la mayoria de las unidades DVD-ROM y
       reproductores de video DVD; hay muy pocas grabadoras de DVD que
       soporten el formato DVD-RAM.

     * DVD+RW: Este es un formato reescribible definido por la DVD+RW
       Alliance. Un DVD+RW puede reescribirse unas 1000 veces.

     * DVD+R: Este un formato es la version de una sola escritura del formato
       DVD+RW.

   Un DVD grabable de una capa puede almacenar hasta 4.700.000.000 bytes, es
   decir, 4'38 GB o 4485 MB (1 kilobyte son 1.024 bytes).

  Nota:

   Debemos hacer una distincion entre medio fisico y aplicacion. Un DVD de
   video es una estructura de fichero especifica que puede escribirse en
   cualquier medio fisico consistente en un DVD grabable: DVD-R, DVD+R,
   DVD-RW, etc. Antes de elegir el tipo de medio, debe asegurarse que la
   grabadora y el reproductor de DVD de video (un reproductor independiente o
   una unidad DVD-ROM en una computadora) son compatibles con el medio que
   pretende utilizar.

  18.7.2. Configuracion

   Utilice growisofs(1) para grabar el DVD. Forma parte de las herramientas
   dvd+rw-tools (sysutils/dvd+rw-tools). Las dvd+rw-tools permiten usar todos
   los tipos de DVD.

   Estas herramientas utilizan el subsistema SCSI para acceder a los
   dispositivos, por lo tanto el soporte ATAPI/CAM debe estar presente en su
   kernel. Si su grabadora usa el interfaz USB no tendra que hacerlo, pero
   tendra que leer la Seccion 18.5, "Dispositivos de almacenamiento USB" para
   mas informacion sobre la configuracion de dispositivos USB.

   Tambien debe que habilitar el acceso DMA para dispositivos ATAPI. Para
   ello anada la siguiente linea a /boot/loader.conf:

 hw.ata.atapi_dma="1"

   Antes de intentar utilizar dvd+rw-tools debe consultar las notas de
   compatibilidad de hardware de dvd+rw-tools por si apareciera cualquier
   informacion relacionada con su grabadora de DVD.

  Nota:

   Si desea un interfaz grafico deberia echar un vistazo a K3b
   (sysutils/k3b), que ofrece un interfaz de usuario amigable para
   growisofs(1) y muchas otras herramientas de grabacion.

  18.7.3. Quemado de DVD de datos

   growisofs(1) es un "frontend" de mkisofs, invocara a mkisofs(8) para crear
   una estructura de sistema de ficheros y realizara la escritura del DVD.
   Esto significa que no necesita crear una imagen de los datos antes del
   proceso de escritura.

   La grabacion en DVD+R o DVD-R de los datos del directorio
   /ruta/a/los/datos, se hace del siguiente modo:

 # growisofs -dvd-compat -Z /dev/cd0 -J -R /ruta/a/los/datos

   Las opciones -J -R se suministran a mkisofs(8) para la creacion del
   sistema de ficheros (en este caso: un sistema de ficheros ISO 9660 con
   extensiones Joliet y Rock Ridge). Consulte la pagina de manual mkisofs(8)
   para mas detalles.

   La opcion -Z se usa la sesion inicial de grabacion en todos los casos,
   sesiones multiples o no. El dispositivo DVD del ejemplo, /dev/cd0, debe
   ajustarse de acuerdo a la configuracion de su sistema. El paramero
   -dvd-compat cerrar' el disco (no se podra anadir nada a la grabacion). Por
   contra, esto le brindara una mejor compatibilidad del medio con unidades
   DVD-ROM.

   Tambien es posible grabar una imagen pre-masterizada, por ejemplo para
   guardar la imagen ficheroimagen.iso:

 # growisofs -dvd-compat -Z /dev/cd0=ficheroimagen.iso

   La velocidad de escritura se detecta y configura automaticamente segun el
   medio y la unidad que se este utilizando. Si quiere forzar la velocidad de
   escritura utilice el parametro -speed=. Para mas informacion consulte la
   pagina de manual growisofs(1).

  18.7.4. Grabacion de un DVD de video

   Un DVD de video es una estructura de ficheros especifica basada en las
   especificiones ISO 9660 y micro-UDF (M-UDF). El DVD de video tambien
   dispone de una jerarquia de estructura de datos especifica; por esta razon
   es necesario un programa especializado para crear tal DVD:
   multimedia/dvdauthor.

   Si ya tiene una imagen de un sistema de ficheros de DVD de video grabelo
   de la misma manera que cualquier otra imagen; consulte la seccion previa
   para ver un ejemplo. Si ha creado el DVD y el resultado esta en, por
   ejemplo, el directorio /ruta/al/video, use el siguiente comando para
   grabar el DVD de video:

 # growisofs -Z /dev/cd0 -dvd-video /ruta/al/video

   La opcion -dvd-video de mkisofs(8) hara posible la creacion de una
   estructura de sistema de ficheros de DVD de video. Ademas, la opcion
   -dvd-video implica la opcion -dvd-compat de growisofs(1).

  18.7.5. Uso de un DVD+RW

   A diferencia de un CD-RW, un DVD+RW virgen necesita ser formateado antes
   de usarse por primera vez. El programa growisofs(1) se encargara de ello
   automaticamente cuando sea necesario, lo cual es el metodo recomendado. De
   todas formas puede usted usar el comando dvd+rw-format para formatear el
   DVD+RW:

 # dvd+rw-format /dev/cd0

   Necesita ejecutar esta operacion solamente una vez, recuerde que solo los
   DVD+RW virgenes necesitan ser formateados. Hecho eso ya puede usar el
   DVD+RW de la forma expuesta en las secciones previas.

   Si desea guardar nuevos datos (grabar un sistema de ficheros totalmente
   nuevo, no anadir mas datos) en un DVD+RW no necesita borrarlo, solo tiene
   que escribir sobre la grabacion anterior (realizando una nueva sesion
   inicial):

 # growisofs -Z /dev/cd0 -J -R /ruta/alos/datosnuevos

   El formato DVD+RW ofrece la posibilidad de anadir datos facilmente a una
   grabacion previa. La operacion consiste en fusionar una nueva sesion a la
   existente, no es escritura multisesion; growisofs(1) hara crecer el
   sistema de ficheros ISO 9660 presente en el medio.

   Si, por ejemplo, anadir datos al DVD+RW del ejemplo anterior tenemos que
   usar lo siguiente:

 # growisofs -M /dev/cd0 -J -R /ruta/alos/datosnuevos

   Las mismas opciones de mkisofs(8) que utilizamos para quemar la sesion
   inicial pueden usarse en ulteriores escritura.

  Nota:

   Puede usar la opcion -dvd-compat si desea mejor la compatibilidad de
   medios con unidades DVD-ROM. Si la usa en un DVD+RW no evitara que pueda
   anadir mas datos.

   Si por alguna razon desea borrar el contenido del medio, haga lo
   siguiente:

 # growisofs -Z /dev/cd0=/dev/zero

  18.7.6. Uso de un DVD-RW

   Un DVD-RW acepta dos formatos de disco: el incremental secuencial y el de
   sobreescritura restringida. Por defecto los discos DVD-RW estan en formato
   secuencial.

   Un DVD-RW virgen puede utilizarse directamente sin necesidad de formateo,
   sin embargo un DVD-RW no virgen en formato secuencial necesita ser borrado
   antes de poder guardar una nueva sesion inicial.

   Para borrar un DVD-RW en modo secuencial, ejecute:

 # dvd+rw-format -blank=full /dev/cd0

  Nota:

   Un borrado total (-blank=full) tardara aproximadamente una hora en un
   medio 1x. Un borrado rapido puede realizarse con la opcion -blank si el
   DVD-RW fue grabado en modo Disk-At-Once (DAO). Para grabar el DVD-RW en
   modo DAO use el comando:

 # growisofs -use-the-force-luke=dao -Z /dev/cd0=ficheroimagen.iso

   La opcion -use-the-force-luke=dao no es imprescindible, ya que
   growisofs(1) trata de detectar el medio (borrado rapido) y entrar en
   escritura DAO.

   Deberia usarse el modo de reescritura restringida en los DVD-RW, pues este
   formato es mas flexible que el formato de incremento secuencial, el
   formato por defecto.

   Para escribir datos en un DVD-RW secuencial proceda del mismo modo que con
   los demas formatos de DVD:

 # growisofs -Z /dev/cd0 -J -R /ruta/alos/datos

   Si desea anadir datos a una grabacion previa tendra que usar la opcion -M
   de growisofs(1). si anade datos a un DVD-RW en modo incremental secuencial
   se creara en el disco una nueva sesion y el resultado sera un disco
   multisesion.

   Un DVD-RW en formato de sobreescritura restringido no necesita ser borrado
   antes de una nueva sesion inicial, solo tiene que sobreescribir el disco
   con la opcion -Z. esto es similar al caso DVD+RW. Tambien es posible
   ampliar un sistema de ficheros ISO 9660 ya existente y escrito en el disco
   del mismo modo que para un DVD+RW con la opcion -M. El resultado sera un
   DVD de una sesion.

   Para poner un DVD-RW en el formato de sobreescritura restringido haga lo
   siguiente:

 # dvd+rw-format /dev/cd0

   Para devolverlo al formato secuencial use:

 # dvd+rw-format -blank=full /dev/cd0

  18.7.7. Multisesion

   Muy pocas unidades DVD-ROM soportan DVDs multisesion. La mayoria de las
   veces (y si tiene suerte) solamente leeran la primera sesion. Los DVD+R,
   DVD-R y DVD-RW en formato secuencial pueden aceptar multisesiones. El
   concepto de multisesion no existe en los formatos de sobreescritura
   restringida de DVD+RW y DVD-RW.

   Usando el siguiente comando despues de una sesion inicial (no-cerrada) en
   un DVD+R, DVD-R o DVD-RW en formato secuencial anadira una nueva sesion al
   disco:

 # growisofs -M /dev/cd0 -J -R /ruta/alos/nuevosdatos

   Usando este comando con un DVD+RW o un DVD-RW en modo de sobreescritura
   restringida, agregara datos fusionando la nueva sesion a la ya existente.
   El resultado sera un disco de una sola sesion. Este es el procedimiento
   habitual para anadir datos tras la escritura inicial.

  Nota:

   Una cierta cantidad de espacio en el medio se usa en cada sesion al
   finalizar e iniciar sesiones; por tanto, se deben anadir sesiones con
   grandes cantidades de datos para optimizar el espacio del DVD. El numero
   de sesiones esta limitado a 154 para un DVD+R, aproximadamente 2.000 para
   un DVD-R y 127 para un DVD+R de doble capa.

  18.7.8. Para mayor informacion

   Para mas informacion sobre un DVD,puede ejecutar el comando
   dvd+rw-mediainfo /dev/cd0 con el disco en la unidad.

   Tiene mas informacion sobre dvd+rw-tools en la manual growisofs(1), en el
   sitio web de dvd+rw-tools y en los archivos de la lista de correos de
   cdwrite.

  Nota:

   Si va a enviar un informe de problemas es imperativo que adjunte la salida
   que dvd+rw-mediainfo produjo al grabar (o no grabar) el medio. Sin esta
   salida sera practicamente imposible ayudarle.

18.8. Creacion y uso de disquetes (floppies)

   Texto original de Julio Merino.
   Reescrito por Martin Karlsson.

   Poder almacenar datos en discos flexibles es util algunas veces, por
   ejemplo cuando no se tiene cualquier otro medio de almacenamiento
   extraible o cuando se necesita transferir una cantidad pequena de datos a
   otro sistema.

   Esta seccion explicara como usar disquetes en FreeBSD. Cubrira
   principalmente el formateo y utilizacion de disquetes DOS de 3.5 pulgadas,
   pero los conceptos son similares en otros formatos de disquete.

  18.8.1. Formateo de disquetes

    18.8.1.1. El dispositivo

   El acceso a los disquetes se efectua a traves de entradas en /dev, igual
   que en otros dispositivos. Para acceder al disquete "crudo" (raw) en
   versiones 4.X y anteriores, se usa /dev/fdN, donde N representa el numero
   de unidad, generalmente 0, o /dev/fdNX, donde X representa una letra.

   En versiones 5.0 o posteriores, simplemente use /dev/fdN.

      18.8.1.1.1. El tamano de disco en versiones 4.X y anteriores

   Tambien existen dispositivos /dev/fdN.tamano, donde tamano es el tamano
   del disquete en kilobytes. Estas entradas se usan durante el formateo a
   bajo nivel para determinar el tamano del disco. En los siguientes ejemplos
   se usara el tamano de 1440kB.

   Algunas veces las entradas bajo /dev tendran que ser (re)creadas. Para
   ello, ejecute:

 # cd /dev && ./MAKEDEV "fd*"

      18.8.1.1.2. El tamano de disco en versiones 5.0 y posteriores

   En 5.0, devfs(5) administrara automaticamente los nodos de dispositivo en
   /dev, asi que el uso de MAKEDEV no es necesario.

   El tamano de disco deseado se pasa a fdformat(1) mediante la bandera -f.
   Los tamanos soportados aparecen en fdcontrol(8), pero tenga muy en cuenta
   que 1440kB es el que funciona mejor.

    18.8.1.2. Formatear

   Un disquete necesita ser formateado a bajo nivel antes de poder usarse.
   Esto suele hacerlo el fabricante, pero el formateo es una buena manera de
   revisar la integridad del medio. Aunque es posible forzar tamanos de disco
   mas grandes (o pequenos), 1440kB es para lo que la mayoria de los
   disquetes estan disenados.

   Para formatear un disquete a bajo nivel debe usar fdformat(1). Esta
   utilidad espera el nombre del dispositivo como argumento.

   Tome nota de cualquier mensaje de error, ya que estos pueden ayudarle a
   determinar si el disco esta bien o mal.

      18.8.1.2.1. Formateo en versiones 4.X y anteriores

   Use el dispositivo /dev/fdN.tamano para formatear el disquete. Inserte un
   disco de 3'5 pulgadas en su unidad y ejecute:

 # /usr/sbin/fdformat /dev/fd0.1440

      18.8.1.2.2. Formateo en versiones 5.0 y posteriores

   Use el dispositivo /dev/fdN para formatear el disquete. Inserte un disco
   de 3'5 pulgadas en su unidad y ejecute:

 # /usr/sbin/fdformat -f 1440 /dev/fd0

  18.8.2. La etiqueta de disco

   Tras un formato del disco a bajo nivel necesitara colocar una etiqueta de
   disco en el. Esta etiqueta de disco sera destruida mas tarde, pero es
   necesaria para que el sistema determine el tamano del disco y su
   geometria.

   La nueva etiqueta de disco ocupara todo el disco, y contendra toda la
   informacion apropiada sobre la geometria del disquete. Los valores de
   geometria para la etiqueta de disco estan en /etc/disktab.

   Ejecute disklabel(8) asi:

 # /sbin/disklabel -B -r -w /dev/fd0 fd1440

  Nota:

   Desde FreeBSD 5.1-RELEASE bsdlabel(8) reemplazo al viejo programa
   disklabel(8). En bsdlabel(8) se eliminaron muchas opciones y parametros
   obsoletos; en el ejemplo de arriba la opcion -r no debe usarse. Para mayor
   informacion consulte la pagina de manual de bsdlabel(8).

  18.8.3. El sistema de ficheros

   Ahora el disquete esta listo para ser formateado a alto nivel. Esto
   colocara un sistema de ficheros nuevo en el disco y permitira a FreeBSD
   leer y escribir en el disco. Despues de crear el sistema de ficheros se
   destruye la etiqueta de disco, asi que si desea reformatearlo, tendra que
   recrear la etiqueta de disco.

   El sistema de ficheros del disquete puede ser UFS o o FAT. FAT suele ser
   una mejor opcion para disquetes.

   Para formatear un disquete ejecute:

 # /sbin/newfs_msdos /dev/fd0

   El disco esta para su uso.

  18.8.4. Uso de un disquete

   Para usar el disquete montelo con mount_msdos(8) (en versiones 4.X y
   anteriores) o con mount_msdosfs(8) (en versiones 5.X o posteriores).
   Tambien se puede usar emulators/mtools.

18.9. Creacion y uso de cintas de datos

   Los principales medios de cinta son 4mm, 8mm, QIC, mini-cartridge y DLT.

  18.9.1. 4mm (DDS: Digital Data Storage)

   Las cintas de 4mm estan reemplazando a las QIC como los medios de respaldo
   mas frecuentes en estaciones de trabajo. Esta tendencia se acelero en gran
   medida cuando Conner adquirio Archive, un fabricante lider de unidades
   QIC, y abandono la produccion de unidades QIC. Las unidades de 4mm son
   pequenas y silenciosas pero no tienen la reputacion de fiabilidad de la
   que disfrutan las unidades de 8mm. Los cartuchos son mas baratos y mas
   pequenos (3 x 2 x 0.5 pulgadas, 76 x 51 x 12 mm) que los cartuchos de 8mm.
   En el caso de las cintas de 4mm, igual que las de 8mm, tienen un cabezal
   con una vida comparativamente mas corta. Ambos utilizan el escaneado en
   espiral.

   El ancho de datos de estas unidades comienza por aprox. 150 kB/s, con un
   pico de aprox. ~500 kB/s. La capacidad de datos va de los 1'3 GB a 2'0 GB.
   La compresion por hardware, disponible con la mayoria de estas unidades,
   dobla aproximadamente la capacidad. Existen unidades de biblioteca de
   cinta multi-unidad con 6 unidades en un solo armario y cambio de cinta
   automatico. Las capacidades de estas bibliotecas alcanzan los 240 GB.

   El estandar DDS-3 soporta capacidades de cinta de hasta 12 GB (o 24 GB con
   compresion).

   Las unidades de 4mm, igual que las unidades de 8mm, utilizan escaneo en
   espiral. Tanto unas como otras tienen las mismas ventajas y desventajas.

   Las cintas deben renovarse por otras despues de 2,000 pasadas o 100
   respaldos completos.

  18.9.2. 8mm (Exabyte)

   Las cintas de 8mm son las unidades de cinta SCSI mas comunes; son la mejor
   opcion de cintas reemplazables y eso hace que las unidades de cinta
   Exabyte 8mm de 2 GB sean casi omnipresentes. Las unidades de 8mm son
   fiables, practicas y silenciosas. Los cartuchos son baratos y bastante
   pequenos (4.8 x 3.3 x 0.6 pulgadas; 122 x 84 x 15 mm). Una desventaja de
   las cintas de 8mm es la vida relativamente corta del cabezal y de la
   propia cinta debido a la alta tasa de movimiento relativo de la cinta por
   los cabezales.

   El ancho de datos varia de aprox. 250 kB/s hasta los 500 kB/s. La
   capacidad va desde los 300 MB hasta los 7 GB. La compresion por hardware,
   disponible con la mayoria de estas unidades, dobla aproximadamente la
   capacidad. Estas unidades estan disponibles como unidades solas o como
   unidades de biblioteca de cinta multi-unidad con 6 unidades y 120 cintas
   en un solo armario. Las cintas las cambia automaticamente la unidad. La
   capacidad de dichas bibliotecas alcanza los 840+ GB.

   El modelo Exabyte "Mammoth" soporta 12 GB en una cinta (24 GB con
   compresion) y cuesta aproximadamente el doble que las unidades de cinta
   convencionales.

   Los datos se graban en cinta utilizando escaneo en espiral. Las cabezas se
   posicionan en angulo en relacion al medio (6 grados aproximadamente). La
   cinta se envuelve cerca de 270 grados en el cilindro que soporta las
   cabezas. El cilindro gira mientras la cinta se desliza sobre el cilindro.
   El resultado es una alta densidad de datos y pistas almacenadas muy
   pegadas, dispuestas en angulo a traves de la cinta de un extremo al otro.

  18.9.3. QIC

   Las cintas y unidades QIC-150 son, quizas, las unidades y medios de cinta
   mas comunes. Las unidades de cinta QIC son las unidades de respaldo
   "serias" menos caras. La desventaja es el coste del medio. Las cintas QIC
   son caras comparadas con las cintas de 8mm o de 4mm, hasta 5 veces el
   precio de almacenamiento de datos por GB. No obstante, si sus necesidades
   pueden satisfacerse con media docena de cintas, QIC tal vez sea la
   decision correcta. QIC es la unidad de cinta mas comun. Casi en todas
   partes tienen una unidad QIC de una u otra densidad. Y ese es el problema,
   QIC ofrece un enorme numero de densidades en cintas fisicamente similares
   (algunas veces identicas). Las unidades QIC son cualquier cosa menos
   silenciosas. Hacen bastante ruido antes de iniciar la grabacion de datos y
   son claramente audibles siempre que leen, escriben o hacen una busqueda.
   Las cintas QIC miden 6 x 4 x 0.7 pulgadas; 152 x 102 x 17 mm.

   El ancho de datos varia de aprox. 150 kB/s a aprox. 500 kB/s. La capacidad
   de datos varia de 40 MB a 15 GB. La compresion por hardware existe en
   muchas de las nuevas unidades QIC. Las unidades QIC se ven con menos
   frecuencia y ademas estan siendo suplantadas por unidades DAT.

   Los datos se graban en la cinta en pistas. Las pistas discurren a lo largo
   del extenso eje de la cinta de un extremo al otro. El numero de pistas, y
   por lo tanto el ancho de una pista varia segun la capacidad de la cinta.
   La mayoria, si no todas las unidades nuevas, ofrecen compatibilidad con
   modelos anteriores al menos para lectura (y tambien en muchos casos de
   escritura). QIC tiene buena reputacion en cuanto a seguridad de los datos
   (las piezas mecanicas son mas simples y mas robustas que en las unidades
   de busqueda en espiral).

   Las cintas deben ser sustituirse por otras despues de 5,000 respaldos.

  18.9.4. DLT

   DLT tiene la tasa de transferencia de datos mas rapida de todos los tipos
   de unidades mostradas aqui. La cinta de 1/2" (12'5mm) esta alojada en un
   cartucho de un solo cilindro (4 x 4 x 1 pulgadas; 100 x 100 x 25 mm). El
   cartucho tiene una puerta giratoria a lo largo de todo un lado del
   cartucho. El mecanismo de la unidad abre esta puerta para extraer el
   "lider". El "lider" de la cinta tiene un agujero oval que la unidad
   utiliza para "enganchar" la cinta. El cilindro de levantamiento esta
   dentro de la unidad de cinta. Los demas cartuchos descritos en este texto
   (los cartuchos de 9 pistas son la unica excepcion) tienen el cilindro
   proveedor alojados dentro del propio cartucho de cinta.

   El ancho de datos es aproximadamente de 1'5 MB/s, tres veces el ancho de
   unidades de cinta de 4mm, de 8mm o QIC. Las capacidades de datos varian
   entre 10 GB y 20 GB en una sola unidad. Hay unidades multicinta y con
   cargadores multi-cinta, y bibliotecas multiunidad que pueden albergar de 5
   a 900 cintas con una a 20 unidades, con lo que pueden alcanzar desde 50 GB
   hasta 9 TB de almacenamiento.

   Con compresion, el formato DLT Type IV soporta hasta 70 GB de capacidad.

   Los datos se almacenan en cinta en pistas paralelas a la direccion del
   movimiento de la cinta (como en las cintas QIC). Se escriben dos pistas al
   mismo tiempo. El tiempo de vida de lectura/escritura es relativamente
   largo. Una vez que la cinta no hay movimiento relativo entre las cabezas y
   la cinta.

  18.9.5. AIT

   AIT es un nuevo formato de Sony, y puede almacenar hasta 50 GB (con
   compresion) por cinta. Las cintas contienen chips de memoria que retienen
   un indice de los contenidos de la cinta. Este indice puede ser leido
   rapidamente para determinar la posicion de los ficheros en la cinta, en
   lugar de los varios minutos que requeriria el proceso con otras cintas.
   SAMS:Alexandria puede gestionar mas de 40 bibliotecas de cinta AIT,
   comunicandose directamente con el chip de memoria de la cinta para
   desplegar el contenido en pantalla, determinar que ficheros fueron
   respaldados a que cinta, ubicar la cinta correcta, cargarla y restaurar
   los datos desde la cinta.

   Las bibliotecas como esta cuestan alrededor de 20.000 dolares, lo que las
   aleja bastante del alcance de los aficionados.

  18.9.6. Estreno de una cinta

   La primera vez que trate de leer o escribir una cinta nueva, completamente
   en blanco, la operacion fallara. El mensaje de la consola se parecera al
   siguiente:

 sa0(ncr1:4:0): NOT READY asc:4,1
 sa0(ncr1:4:0):  Logical unit is in process of becoming ready

   La cinta no contiene un bloque identificador (bloque numero 0). Todas las
   unidades de cinta QIC desde la adopcion del estandar QIC-525 escriben un
   bloque identificador en la cinta. Existen dos soluciones:

     * mt fsf 1 hace que la unidad de cinta escriba un bloque identificador a
       la cinta.

     * Use el boton del panel frontal para expulsar la cinta.

       Inserte nuevamente la cinta y haga un dump de datos a la cinta.

       dump devolvera DUMP: End of tape detected y la consola mostrara
       HARDWARE FAILURE info:280 asc:80,96.

       Rebobine la cinta usando: mt rewind.

       A partir de ese momento podra utilizar la cinta.

18.10. Respaldos en disquetes

  18.10.1. ?Puedo utilizar disquetes para respaldar mis datos?

   Los disquetes no son realmente el medio ideal para hacer respaldos debido
   a que:

     * El medio no es fiable, especialmente despues de largos periodos de
       tiempo.

     * El respaldo y la restauracion es muy lento.

     * Tienen una capacidad muy limitada (los dis de respaldar un disco duro
       entero en una docena de disquetes pasaron hace mucho).

   De todas maneras, si no tiene otro metodo para respaldar sus datos los
   disquetes son una mejor solucion que no tener ningun respaldo.

   Si tiene que utilizar disquetes asegurese de usar discos de buena calidad.
   Los disquetes que han estado almacenados en la oficina durante un par de
   anos son una mala eleccion. Lo mejor seria que utilizara discos nuevos de
   un fabricante respetado.

  18.10.2. ?Como respaldo mis datos a discos flexibles?

   La mejor manera de respaldar a un disquete es usar tar(1) con la opcion -M
   (multi volumen), que permite que el respaldo se guarde en varios
   disquetes.

   Para respaldar todos los ficheros en el directorio actual y sus
   subdirectorios use esto (como root):

 # tar Mcvf /dev/fd0 *

   Cuando el primer disquete este lleno tar(1) le solicitara que inserte el
   siguiente volumen (debido a que tar(1) es independiente del medio se
   refiere a volumenes; en este contexto se refiere a disquetes).

 Prepare volume #2 for /dev/fd0 and hit return:

   Esto se repite (con el numero de volumen incrementando) hasta que todos
   los ficheros especificados hayan sido archivados.

  18.10.3. ?Puedo comprimir mis respaldos?

   Desafortunadamente, tar(1) no permite el uso de la opcion -z para archivos
   multi-volumen. Puede, por supuesto, hacer un gzip(1) a todos los ficheros,
   mandarlos con tar(1) a los disquetes, y despues hacer gunzip(1) a los
   archivos

  18.10.4. ?Como recupero mis respaldos?

   Para restaurar el archivo completo use:

 # tar Mxvf /dev/fd0

   Hay dos maneras que puede usar para restaurar ficheros especificos. La
   primera, puede comenzar por el primer disco flexible y usar:

 # tar Mxvf /dev/fd0 nombredefichero

   La utilidad tar(1) le pedira que inserte el resto de disquetes hasta que
   encuentre el fichero requerido.

   La segunda manera es: si sabe en que disco se encuentra el fichero puede
   insertar ese disco y usar el comando expuesto arriba. Tenga en cuenta que
   si el primer fichero en el disquete es la continuacion del anterior tar(1)
   le advertira que no puede restaurarlo incluso si no se lo ha solicitado

18.11. Bases para respaldos

   Los tres principales programas para respaldos son dump(8), tar(1) y
   cpio(1).

  18.11.1. Dump y Restore

   Los programas UNIX(R) que se han usado durante muchos anos para hacer
   copias de seguridad son dump y restore. Operan en las unidades como una
   coleccion de bloques de disco, bajo la abstraccion de ficheros, los
   enlaces y directorios creados por el sistema de ficheros. dump respalda un
   sistema de ficheros completo en un dispositivo. No es capaz de respaldar
   solamente parte de un sistema de ficheros o un arbol de directorios que se
   extienda por mas de un sistema de ficheros. dump no escribe ficheros y
   directorios a cinta, escribe los bloques de datos "crudos" (raw) que
   conforman los ficheros y directorios.

  Nota:

   Si utiliza dump en su directorio raiz, no respaldara /home, /usr ni muchos
   otros directorios, ya que suelen ser puntos de montaje de otros sistemas
   de ficheros o enlaces simbolicos hacia dichos sistemas de ficheros.

   dump tiene peculiaridades que se mantienen desde sus primeros dias en la
   Version 6 de AT&T UNIX (alrededor de 1975). Los parametros por defecto son
   los adecuados para cintas de 9 pistas (6250 bpi), pero no para los medios
   de alta densidad disponibles hoy en dia (hasta 62,182 ftpi). Estos valores
   por defecto deben obviarse en la linea de comandos para aprovechar la
   capacidad de las unidades de cinta actuales.

   Tambien es posible respaldar datos a traves de la red a una unidad de
   cinta conectada a otra computadora con rdump y rrestore. Ambos programas
   dependen de rcmd(3) y ruserok(3) para acceder a la unidad de cinta remota.
   Por consiguiente, el usuario que realiza el respaldo debe estar listado en
   el fichero .rhosts de la computadora remota. Los argumentos para rdump y
   rrestore deben ser adecuados para usarse en la computadora remota. Cuando
   realice un rdump desde FreeBSD a una unidad de cinta Exabyte conectada a
   una Sun llamada komodo, use:

 # /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1

   Advertencia: existen implicaciones de seguridad al permitir
   autentificacion mediante .rhosts. Le recomendamos que evalue la situacion
   cuidadosamente.

   Tambien es posible usar dump y restore de una forma mas segura a traves de
   ssh.

   Ejemplo 18.1. Utilizando dump a traves de ssh

 # /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
           usuario@maquinaobjetivo.ejemplo.com dd of=/misficherosgrandes/dump-usr-l0.gz

   Uso del metodo integrado de dump, configurando la variable de ambiente
   RSH:

   Ejemplo 18.2. Uso de dump a traves de ssh con RSH configurada

 # RSH=/usr/bin/ssh /sbin/dump -0uan -f usuario@maquinaobjetivo.ejemplo.com:/dev/sa0 /usr

  18.11.2. tar

   tar(1) tambien es de la epoca de la Version 6 de AT&T UNIX (alrededor de
   1975). tar trabaja en cooperacion con el sistema de ficheros; escribe
   ficheros y directorios a cinta. tar no soporta el rango completo de
   opciones que ofrece cpio(1), pero no requiere el inusual comando de
   pipeline que utiliza cpio.

   En FreeBSD 5.3 y posteriores, tiene a su disposicion GNU tar y el comando
   por defecto bsdtar. La version GNU puede ser invocada mediante gtar.
   Soporta dispositivos remotos mediante la misma sintaxis que rdump. Para
   hacer un tar a una unidad de cinta conectada a una Sun llamada komodo,
   use:

 # /usr/bin/gtar cf komodo:/dev/nsa8 . 2>&1

   Puede hacer lo mismo con o con bsdtar usando un "pipe" y rsh para mandar
   los datos a una unidad de cinta remota.

 # tar cf - . | rsh nombredemaquina dd of=dispositivo-de-cinta obs=20b

   Si le preocupa la seguridad del proceso de hacer un respaldo a traves de
   una red debe usar ssh en lugar de rsh.

  18.11.3. cpio

   cpio(1) es el programa de intercambio de archivos de cinta para medios
   magneticos. cpio tiene opciones (entre muchas otras) para realizar
   intercambio de bytes, escribir un numero diferente de formatos de archivo
   y hacer "pipe" de datos hacia otros programas. Esta ultima opcion hace de
   cpio una eleccion excelente para medios de instalacion. cpio no sabe como
   recorrer el arbol de directorios, asi que debe facilitarle una lista de
   directorios a traves de stdin.

   cpio no permite respaldos a traves de la red. Puede usar un pipe y rsh
   para mandar los datos a una unidad de cinta remota.

 # for f in lista_directorios; do
 find $f << backup.list
 done
 # cpio -v -o --format=newc < backup.list | ssh usuario@maquina "cat > dispositivo_de_respaldo"

   Donde lista_directorios es la lista de directorios que desea respaldar,
   usuario@maquina es la combinacion usuario/nombre de equipo que realizara
   el respaldo y dispositivo_de_respaldo es donde el respaldo se escribira
   efectivamente (por ejemplo /dev/nsa0).

  18.11.4. pax

   pax(1) es la respuesta IEEE/POSIX(R) a tar y cpio. A traves de los anos
   las diversas versiones de tar y cpio se han vuelto ligeramente
   incompatibles, asi que en lugar de pelear por hacerlo completamente
   estandar, POSIX(R) creo una nueva utilidad de archivado. pax trata de leer
   y escribir muchos de los diversos formatos de cpio y tar, ademas de nuevos
   formatos propios. Su conjunto de comandos se parece mas a cpio que a tar.

  18.11.5. Amanda

   Amanda (Advanced Maryland Network Disk Archiver) es un sistema de
   respaldos cliente/servidor, en lugar de un solo programa. Un servidor
   Amanda respaldara a una sola unidad de cinta cualquier cantidad de
   computadoras que tengan clientes Amanda y una conexion de red al servidor
   Amanda. Un problema comun en sitios con gran cantidad de discos grandes es
   que la cantidad de tiempo requerida para respaldar los datos directamente
   a cinta excede la cantidad de tiempo disponible para la tarea. Amanda
   resuelve este problema. Amanda puede usar un "disco intermedio" para
   respaldar varios sistemas de ficheros al mismo tiempo. Amanda crea
   "conjuntos de archivo", esto es, un grupo de cintas usadas durante un
   periodo de tiempo para crear respaldos completos de todos los sistemas de
   ficheros listados en el fichero de configuracion de Amanda. El "conjunto
   de archivo" tambien contiene respaldos incrementales nocturnos (o
   diferenciales) de todos los sistemas de ficheros. Para restaurar un
   sistema de ficheros danado hace falta el respaldo completo mas reciente y
   los respaldos incrementales.

   El fichero de configuracion ofrece un control exhaustivo de los respaldos
   y del trafico de red que Amanda genera. Amanda usara cualquiera de los
   programas de respaldo mencionados arriba para escribir los datos a cinta.
   Puede instalar Amanda como paquete y como port. No forma parte del sistema
   base.

  18.11.6. No hacer nada

   "No hacer nada" no es un programa, pero es la estrategia de respaldo mas
   extendida. No tiene coste. No hay un calendario de respaldos a seguir.
   Simplemente hay que decir que no. Si algo le sucediera a sus datos sonria
   y acostumbrese a su nueva situacion.

   Si su tiempo y sus datos valen poco o nada, entonces "no hacer nada" es el
   programa de respaldo mas adecuado para usted. Pero cuidado, UNIX(R) es una
   herramienta muy poderosa y puede suceder que dentro de seis meses tenga un
   monton de ficheros que sean valiosos para usted.

   "No hacer nada" es el metodo correcto de respaldo para /usr/obj y otros
   arboles de directorios que pueden ser facilmente recreados por su
   computadora. Un ejemplo son los archivos que forman la version HTML o
   PostScript(R) de este manual. Estos documentos han sido generados desde
   ficheros SGML. Crear respaldos de los archivos HTML o PostScript(R) no es
   necesario dado que los ficheros SGML se respaldan regularmente.

  18.11.7. ?Cual es el mejor programa de respaldos?

   dump(8). Y no hay mas que hablar. Elizabeth D. Zwicky realizo pruebas de
   estres a a todos los programas de copia de seguridad aqui expuestos. La
   eleccion clarisima para preservar todos sus datos y todas las
   peculiaridades de sus sistemas de ficheros UNIX(R) es dump. Elizabeth creo
   sistemas de ficheros conteniendo una gran variedad de condiciones
   inusuales (y algunos no tan inusuales) y probo cada programa haciendo un
   respaldo y restaurando esos sistemas de ficheros. Esas peculiaridades
   incluian: ficheros con y un bloque nulo, ficheros con caracteres extranos
   en sus nombres, ficheros que no se podian leer ni escribir, dispositivos,
   ficheros que cambiaban de tamano durante el respaldo, ficheros que eran
   creados/borrados durante el respaldo y cosas asi. Elizabeth presento los
   resultados en LISA V en octubre de 1991. Consulte torture-testing Backup
   and Archive Programs.

  18.11.8. Procedimiento de restauracion de emergencia

    18.11.8.1. Antes del desastre

   Solamente existen cuatro pasos que debe realizar en preparacion de
   cualquier desastre que pudiera ocurrir.

   Primero, imprima la etiqueta de disco de cada uno de sus discos (disklabel
   da0 | lpr), su tabla de sistemas de ficheros (/etc/fstab) y todos los
   mensajes de arranque, dos copias de cada uno.

   Segundo, asegurese que los disquetes de rescate (boot.flp y fixit.flp)
   tienen todos sus dispositivos. La manera mas facil de revisarlo es
   reiniciar su maquina con el disquete en la unidad y revisar los mensajes
   de arranque. Si todos sus dispositivos aparecen en la lista y funcionan,
   pase al tercer paso.

   Si ha habido algun problema tiene que crear dos disquetes de arranque
   personalizados, que deben tener un kernel que pueda montar todos sus
   discos y acceder a su unidad de cinta. Estos discos deben contener: fdisk,
   disklabel, newfs, mount y cualquier programa de respaldo que utilice.
   Estos programas deben estar enlazados estaticamente. Si usa dump, el
   disquete debe contener restore.

   Tercero, use cintas de respaldo regularmente. Cualquier cambio que haga
   despues de su ultimo respaldo puede perderse irremediablemente. Proteja
   contra escritura las cintas de respaldo.

   Cuarto, pruebe los disquetes (ya sea boot.flp y fixit.flp o los dos discos
   personalizados que creo en el segundo paso) y las cintas de respaldo.
   Documente el procedimiento. Almacene estas notas con los discos de
   arranque, las impresiones y las cintas de respaldo. Estara tan perturbado
   cuando restaure su sistema que las notas pueden pueden evitar que destruya
   sus cintas de respaldo. (?Como? en lugar de tar xvf /dev/sa0, puede
   teclear accidentalmente tar cvf /dev/sa0 y sobreescribir su cinta).

   Como medida adicional de seguridad haga discos de inicio y dos cintas de
   respaldo cada vez. Almacene una de cada en una ubicacion remota. Una
   ubicacion remota NO es el sotano del mismo edificio. Muchas firmas
   alojadas en el World Trade Center aprendieron esta leccon de la manera mas
   dificil. Esa ubicacion remota debe estar separada fisicamente de sus
   computadoras y unidades de disco por una distancia significativa.

   Ejemplo 18.3. Un "script" para la creacion de discos flexibles de arranque

 #!/bin/sh
 #
 # create a restore floppy
 #
 # format the floppy
 #
 PATH=/bin:/sbin:/usr/sbin:/usr/bin

 fdformat -q fd0
 if [ $? -ne 0 ]
 then
          echo "Bad floppy, please use a new one"
          exit 1
 fi

 # place boot blocks on the floppy
 #
 disklabel -w -B /dev/fd0c fd1440

 #
 # newfs the one and only partition
 #
 newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a

 #
 # mount the new floppy
 #
 mount /dev/fd0a /mnt

 #
 # create required directories
 #
 mkdir /mnt/dev
 mkdir /mnt/bin
 mkdir /mnt/sbin
 mkdir /mnt/etc
 mkdir /mnt/root
 mkdir /mnt/mnt                  # for the root partition
 mkdir /mnt/tmp
 mkdir /mnt/var

 #
 # populate the directories
 #
 if [ ! -x /sys/compile/MINI/kernel ]
 then
          cat &lt;&lt; EOM
 The MINI kernel does not exist, please create one.
 Here is an example config file:
 #
 # MINI - A kernel to get FreeBSD onto a disk.
 #
 machine         "i386"
 cpu             "I486_CPU"
 ident           MINI
 maxusers        5

 options         INET                    # needed for _tcp _icmpstat _ipstat
                                         #            _udpstat _tcpstat _udb
 options         FFS                     #Berkeley Fast File System
 options         FAT_CURSOR              #block cursor in syscons or pccons
 options         SCSI_DELAY=15           #Be pessimistic about Joe SCSI device
 options         NCONS=2                 #1 virtual consoles
 options         USERCONFIG              #Allow user configuration with -c XXX

 config          kernel  root on da0 swap on da0 and da1 dumps on da0

 device          isa0
 device          pci0

 device          fdc0    at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
 device          fd0     at fdc0 drive 0

 device          ncr0

 device          scbus0

 device          sc0     at isa? port "IO_KBD" tty irq 1 vector scintr
 device          npx0    at isa? port "IO_NPX" irq 13 vector npxintr

 device          da0
 device          da1
 device          da2

 device          sa0

 pseudo-device   loop            # required by INET
 pseudo-device   gzip            # Exec gzipped a.out's
 EOM
          exit 1
 fi

 cp -f /sys/compile/MINI/kernel /mnt

 gzip -c -best /sbin/init > /mnt/sbin/init
 gzip -c -best /sbin/fsck > /mnt/sbin/fsck
 gzip -c -best /sbin/mount > /mnt/sbin/mount
 gzip -c -best /sbin/halt > /mnt/sbin/halt
 gzip -c -best /sbin/restore > /mnt/sbin/restore

 gzip -c -best /bin/sh > /mnt/bin/sh
 gzip -c -best /bin/sync > /mnt/bin/sync

 cp /root/.profile /mnt/root

 cp -f /dev/MAKEDEV /mnt/dev
 chmod 755 /mnt/dev/MAKEDEV

 chmod 500 /mnt/sbin/init
 chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
 chmod 555 /mnt/bin/sh /mnt/bin/sync
 chmod 6555 /mnt/sbin/restore

 #
 # create the devices nodes
 #
 cd /mnt/dev
 ./MAKEDEV std
 ./MAKEDEV da0
 ./MAKEDEV da1
 ./MAKEDEV da2
 ./MAKEDEV sa0
 ./MAKEDEV pty0
 cd /

 #
 # create minimum file system table
 #
 cat > /mnt/etc/fstab &lt;&lt;EOM
 /dev/fd0a    /    ufs    rw  1  1
 EOM

 #
 # create minimum passwd file
 #
 cat > /mnt/etc/passwd &lt;&lt;EOM
 root:*:0:0:Charlie &amp;:/root:/bin/sh
 EOM

 cat > /mnt/etc/master.passwd &lt;&lt;EOM
 root::0:0::0:0:Charlie &amp;:/root:/bin/sh
 EOM

 chmod 600 /mnt/etc/master.passwd
 chmod 644 /mnt/etc/passwd
 /usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd

 #
 # umount the floppy and inform the user
 #
 /sbin/umount /mnt
 echo "The floppy has been unmounted and is now ready."

    18.11.8.2. Despues del desastre

   La pregunta clave es: ?sobrevivio su hardware? Ha estado haciendo
   respaldos regularmente, asi que no hay necesidad de preocuparse por el
   software.

   Si el hardware ha sufrido danos los componentes deben reemplazarse antes
   de intentar de usar su sistema.

   Si su hardware esta bien revise sus discos de arranque. Si usa disquetes
   de arranque personalizados arranque en modo monousuario (teclee -s en el
   en el "prompt" de arranque boot:). Saltese el siguiente parrafo.

   Si utiliza usando los discos boot.flp y fixit.flp, siga leyendo. Inserte
   el disco boot.flp en la primera unidad de disquete y arranque la maquina.
   El menu de instalacion original se desplegara en pantalla. Seleccione la
   opcion Fixit--Repair mode with CDROM or floppy.. Inserte el disco
   fixit.flp cuando se le pida. Tanto restore como los demas programas que
   necesitara estan en /mnt2/rescue (/mnt2/stand para versiones de FreeBSD
   anteriores a 5.2).

   Recupere cada sistema de ficheros por separado.

   Trate de montar (por ejemplo mount /dev/da0a /mnt) la particion raiz de su
   primer disco. Si la etiqueta del disco ha sufrido danos use disklabel para
   reparticionar y etiquetar el disco de forma que coincida con la etiqueta
   que imprimio y guardo previamente. Use newfs para crear de nuevo sus
   sistemas de ficheros. Monte de nuevo la particion raiz del disquete en
   modo lectura/escritura (mount -u -o rw /mnt). Ejecute su programa de
   respaldo y utilice las cintas de respaldo para restaurar sus datos en este
   sistema de ficheros (restore vrf /dev/sa0). Desmonte el sistema de
   ficheros (umount /mnt). Repita el proceso con cada sistema de ficheros que
   sufrio danos.

   Una vez que su sistema este en marcha respalde sus datos en cintas nuevas.
   Cualquiera que haya sido la causa de la caida o perdida de datos puede
   suceder de nuevo. Una hora mas que gaste ahora puede ahorrarle mucho
   sufrimiento mas adelante.

18.12. Sistemas de ficheros en red, memoria y respaldados en fichero

   Reorganizado y mejorado por Marc Fonvieille.

   Ademas de los discos que conecta fisicamente en su maquina (discos
   flexibles, CDs, discos duros, etc.) FreeBSD permite usar otro tipo de
   discos: los discos virtuales.

   Esto incluye sistemas de ficheros en red como NFS y Coda, sistemas de
   ficheros basados en memoria y sistemas de ficheros basados en fichero.

   Segun la version de FreeBSD que utilice tendra que utilizar diferentes
   herramientas para la creacion y uso de sistemas de ficheros en memoria y
   sistemas de ficheros basados en fichero.

  Nota:

   Los usuarios de FreeBSD 4.X tendran que usar MAKEDEV(8) para crear los
   dispositivos requeridos. FreeBSD 5.0 y posteriores usan devfs(5) para
   gestionar los nodos de dispositivo correspondientes de forma transparente
   para el usuario.

  18.12.1. Sistema de ficheros basado en fichero en FreeBSD 4.X

   La utilidad vnconfig(8) configura y habilita vnodes de dispositivos de
   pseudodisco. Un vnode es una representacion de un fichero y es el enfoque
   de la actividad de fichero. Esto significa que vnconfig(8) utiliza
   ficheros para crear y operar un sistema de ficheros. Un uso posible es el
   montaje de imagenes de disquetes o CD almacenadas como ficheros.

   Para poder usar vnconfig(8) necesitara tener vn(4) en el fichero de
   configuracion de su kernel:

 pseudo-device vn

   Para montar una imagen de un sistema de ficheros:

   Ejemplo 18.4. Uso de vnconfig para montar una imagen de un sistema de
   ficheros bajo FreeBSD 4.X

 # vnconfig vn0 imagendedisco
 # mount /dev/vn0c /mnt

   Para crear una nueva imagen de un sistema de ficheros con vnconfig(8):

   Ejemplo 18.5. Creacion de una imagen nueva de un sistema de ficheros
   respaldado en un archivo con vnconfig

 # dd if=/dev/zero of=nuevaimagen bs=1k count=5k
 5120+0 records in
 5120+0 records out
 # vnconfig -s labels -c vn0 nuevaimagen
 # disklabel -r -w vn0 auto
 # newfs vn0c
 Warning: 2048 sector(s) in last cylinder unallocated
 /dev/vn0c:     10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
         5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
 super-block backups (for fsck -b #) at:
  32
 # mount /dev/vn0c /mnt
 # df /mnt
 Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
 /dev/vn0c        4927        1     4532     0%    /mnt

  18.12.2. Sistemas de ficheros basados en fichero en FreeBSD 5.X

   mdconfig(8) se usa para configurar y habilitar discos habilitar discos de
   memoria, md(4), en FreeBSD 5.X. Para usar mdconfig(8), tendra que cargar
   el modulo md(4) o anadir soporte para el mismo el el fichero de
   configuracion del kernel:

 device md

   mdconfig(8) soporta tres tipos de discos virtuales en memoria: discos de
   memoria asignados mediante malloc(9), discos de memoria usando un fichero
   o espacio de swap como respaldo. Un uso posible es montar imagenes de
   disquetes o CD archivadas.

   Para montar una imagen de un sistema de ficheros:

   Ejemplo 18.6. Uso de mdconfig para montar una imagen de un sistema de
   ficheros en FreeBSD 5.X

 # mdconfig -a -t vnode -f imagendedisco -u 0
 # mount /dev/md0 /mnt

   Para crear una imagen nueva de un sistema de ficheros con mdconfig(8):

   Ejemplo 18.7. Creacion de un disco respaldado en fichero con mdconfig

 # dd if=/dev/zero of=nuevaimagen bs=1k count=5k
 5120+0 records in
 5120+0 records out
 # mdconfig -a -t vnode -f nuevaimagen -u 0
 # disklabel -r -w md0 auto
 # newfs md0c
 /dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048
         using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
 super-block backups (for fsck -b #) at:
  32, 2624, 5216, 7808
 # mount /dev/md0c /mnt
 # df /mnt
 Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
 /dev/md0c        4846        2     4458     0%    /mnt

   Si no especifica el numero de unidad con la opcion -u mdconfig(8) usara la
   designacion automatica de md(4) para seleccionar un dispositivo sin usar.
   El nombre de la unidad designada se enviara a la salida esandar como md4.
   Para mas informacion sobre mdconfig(8) consulte su pagina de manual.

  Nota:

   A partir de FreeBSD 5.1-RELEASE bsdlabel(8) reemplazo a disklabel(8). En
   bsdlabel(8) se eliminaron muchas opciones y parametros obsoletos. En el
   ejemplo de arriba ignore la opcion -r. Para mas informacion consulte la
   pagina de manual de bsdlabel(8).

   mdconfig(8) es muy util, aunque requiere muchas lineas de comando para
   crear un sistema de ficheros basado en un fichero. FreeBSD 5.0 incorpora
   mdmfs(8), que configura un disco md(4) utilizando mdconfig(8), pone un
   sistema de ficheros UFS en el mediante newfs(8) y lo monta usando
   mount(8). Por ejemplo, si desea crear y montar la misma imagen de sistema
   de ficheros de arriba, simplemente teclee lo siguiente:

   Ejemplo 18.8. Configurar y montar un disco basado en un fichero con mdmfs

 # dd if=/dev/zero of=nuevaimagen bs=1k count=5k
 5120+0 records in
 5120+0 records out
 # mdmfs -F newimage -s 5m md0 /mnt
 # df /mnt
 Filesystem 1K-blocks Used Avail Capacity  Mounted on
 /dev/md0        4846    2  4458     0%    /mnt

   Si utiliza la opcion md sin numero de unidad, mdmfs(8) usara la opcion de
   auto unidad de md(4) para selecionar automaticamente un dispositivo sin
   usar. Para mas informacion sobre mdmfs(8) dirijase a la pagina de manual.

  18.12.3. Sistemas de ficheros basados en memoria en FreeBSD 4.X

   El controlador md(4) es un modo sencillo y eficiente de crear sistemas de
   ficheros basados en memoria en FreeBSD 4.X. malloc(9) se usa para ubicar
   la memoria.

   Sencillamete toma un sistema de ficheros que usted ha preparado con, por
   ejemplo, vnconfig(8), y:

   Ejemplo 18.9. Disco de memoria md en FreeBSD 4.X

 # dd if=nuevaimagen of=/dev/md0
 5120+0 records in
 5120+0 records out
 # mount /dev/md0c /mnt
 # df /mnt
 Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
 /dev/md0c        4927        1     4532     0%    /mnt

   Para mas informacion por favor consulte la pagina de manual de md(4).

  18.12.4. sistemas de ficheros basados en memoria en FreeBSD 5.X

   Se usan las mismas herramientas para tratar con sistemas de ficheros
   basados en memoria o en ficheros: mdconfig(8) o mdmfs(8). El
   almacenamiento de sistemas de ficheros basados en memoria requiere el uso
   de malloc(9).

   Ejemplo 18.10. Creacion de un nuevo disco basado en memoria con mdconfig

 # mdconfig -a -t malloc -s 5m -u 1
 # newfs -U md1
 /dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
         using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
         with soft updates
 super-block backups (for fsck -b #) at:
  32, 2624, 5216, 7808
 # mount /dev/md1 /mnt
 # df /mnt
 Filesystem 1K-blocks Used Avail Capacity  Mounted on
 /dev/md1        4846    2  4458     0%    /mnt

   Ejemplo 18.11. Creacion de un nuevo disco basado en memoria con mdmfs

 # mdmfs -M -s 5m md2 /mnt
 # df /mnt
 Filesystem 1K-blocks Used Avail Capacity  Mounted on
 /dev/md2        4846    2  4458     0%    /mnt

   En lugar de usar un sistema de ficheros respaldado en malloc(9), es
   posible utilizar swap; lo unico que debe hacer es sustituir malloc por
   swap en la linea de comando de mdconfig(8). mdmfs(8) por defecto (sin -M)
   crea un disco basado en swap). Para mas informacion, consulte las paginas
   de manual de mdconfig(8) y de mdmfs(8).

  18.12.5. Desconexion del sistema de un disco de memoria

   Cuando un sistema de ficheros basado en memoria o basado en fichero no se
   usa puede liberar recursos del sistema. Lo primero es desmontar el sistema
   de ficheros: use mdconfig(8) para desconectar el disco del sistema y
   liberar dichos recursos.

   Por ejemplo, para desconectar y liberar todos los recursos usados por
   /dev/md4:

 # mdconfig -d -u 4

   Es posible listar informacion sobre dispositivos md(4) configurados en el
   sistema mediante mdconfig -l.

   En FreeBSD 4.X se usa vnconfig(8) para desconectar el dispositivo. Por
   ejemplo, para desconectar y liberar todos los recursos usados por
   /dev/vn4:

 # vnconfig -u vn4

18.13. Instantaneas ("snapshots") de sistemas de ficheros

   Escrito por Tom Rhodes.

   FreeBSD 5.0 ofrece una caracteristica relacionada con Soft Updates: las
   instantaneas del sistema de ficheros.

   Las instantaneas permiten a un usuario crear imagenes de uno o mas
   sistemas de ficheros dados, y tratarlas como un fichero. Los ficheros de
   instantanea deben crearse en el sistema de ficheros en el que se realiza
   la accion, y un usuario puede crear hasta 20 (veinte) instantaneas por
   sistema de ficheros. Las instantaneas activas se graban en el superbloque,
   lo que hace que sigan ahi independientemente de montajes, remontajes y
   reinicios del sistema. Cuando ya no necesite una instantanea puede
   borrarla con rm(1). Las instantaneas pueden borrarse en cualquier orden
   pero puede que no pueda recuperar todo el espacio debido a que otra
   instantanea puede reclamar algunos bloques liberados.

   La bandera inalterable de fichero snapshot se activa con mksnap_ffs(8)
   despues de la creacion inicial de un fichero de instantanea. unlink(1)
   hace una excepcion con los ficheros de instantanea, ya que permite que se
   les borre.

   Las instantaneas se crean con mount(8). Veamos un ejemplo. Vamos a colocar
   una instantanea de /var en /var/snapshot/snap:

 # mount -u -o snapshot /var/snapshot/snap /var

   Tambien puede usar mksnap_ffs(8) para crear una instantanea:

 # mksnap_ffs /var /var/snapshot/snap

   Si busca ficheros de instantanea en un sistema de de ficheros (por ejemplo
   /var) puede usar find(1):

 # find /var -flags snapshot

   Una instantanea tiene distintos usos:

     * Algunos administradores usan un fichero de instantanea como respaldo,
       puesto que la instantanea puede guardarse en CD o cinta.

     * Integridad de ficheros; fsck(8) puede ejecutarse en una instantanea.
       Asumiendo que el sistema de ficheros estuviera limpio cuando se monto
       se debe obtener un resultado limpio (e intacto). En esencia el proceso
       fsck(8) hace esto mismo en segundo plano.

     * Ejecucion de dump(8) en la instantanea. Se obtendra un dump
       consistente con el sistema de ficheros y los sellos de hora de la
       instantanea. dump(8) tambien puede leer una instantanea, crear una
       imagen dump y eliminar la instantanea en un comando usando la opcion
       -L.

     * Ejecutar un mount(8) contra la instantanea como una imagen congelada
       del sistema de ficheros. Para montar la instantanea /var/snapshot/snap
       ejecute:

 # mdconfig -a -t vnode -f /var/snapshot/snap -u 4
 # mount -r /dev/md4 /mnt

   Podra recorrer la jerarquia de su sistema de ficheros /var congelado
   montado en /mnt. Todo estara en el mismo estado en el que estaba cuando
   creo la instantanea. La unica excepcion es que cualquier instantanea
   anterior aparecera como un fichero de longitud cero. Cuando haya acabado
   de usar una instantanea puede desmontarla con:

 # umount /mnt
 # mdconfig -d -u 4

   Para mas informacion sobre softupdates e instantaneas de sistemas
   ficheros, incluyendo textos tecnicos, visite el sitio web de Marshall Kirk
   McKusick: http://www.mckusick.com/.

18.14. Cuotas en sistemas de ficheros

   Las cuotas son una opcion del sistema operativo que le permite limitar la
   cantidad de espacio en disco y/o el numero de fichero que un usuario o
   miembros de un grupo pueden crear en el sistema, pudiendo ademas hacerlo
   de forma independiente en cada sistema de ficheros. Suele usarse
   principalmente en sistemas de tiempo compartido, donde se busca limitar la
   cantidad de recursos que cualquier usuario o grupo pueden utilizar. Esto
   evitara que un usuario o un grupo de usuarios consuma todos el espacio
   disponible en disco.

  18.14.1. Configuracion del sistema para habilitar cuotas de disco

   Antes de intentar configurar el uso de cuotas de disco hay que asegurarse
   de que las cuotas estan activadas en el kernel. La siguiente linea debe
   estar en el fichero de de configuracion del kernel:

 options QUOTA

   El kernel GENERIC no lo tiene activado por defecto, asi que tendra que
   configurar, compilar e instalar un kernel personalizado para poder usar
   cuotas de disco. Por favor, consulte el Capitulo 8, Configuracion del
   kernel de FreeBSD para mas informacion sobre la configuracion del kernel.

   A continuacion tendra que habilitar las cuotas de disco en /etc/rc.conf.
   Anadale la siguiente linea:

 enable_quotas="YES"

   Hay una variable que le permitira efectuar un control mas exhaustivo sobre
   el arranque de cuotas. Normalmente se revisa la integridad de cuotas de
   cada sistema de ficheros en el arranque; el responsable es quotacheck(8).
   quotacheck(8) se asegura de que los datos que hay en su base de datos de
   cuotas reflejen realmente los datos del sistema de ficheros. Es un proceso
   que lleva mucho tiempo y que afectara significativamente al tiempo que
   tardara su sistema en arrancar. Si desea saltarse ese paso puede usar una
   variable al efecto en /etc/rc.conf:

 check_quotas="NO"

   Para concluir tendra que editar /etc/fstab para habilitar las cuotas de
   disco para cada sistema de ficheros. Es aqui donde podra habilitar cuotas
   por usuario, por grupo, o ambos en todos sus sistemas de ficheros.

   Para habilitar cuotas por usuario en un sistema de ficheros anada la
   opcion userquota al campo de opciones en la entrada de /etc/fstab que
   corresponda al sistema de ficheros en el que quiere habilitar las cuotas.
   Veamos un ejemplo:

 /dev/da1s2g   /home    ufs rw,userquota 1 2

   En el caso de las cuotas de grupo es muy similar. Use la opcion groupquota
   en lugar de userquota. Para habilitar cuotas por usuario y por grupo
   modifique la entrada de este modo:

 /dev/da1s2g    /home    ufs rw,userquota,groupquota 1 2

   Por defecto los ficheros de cuota se guardan en el directorio raiz del
   sistema de ficheros con los nombres quota.user y quota.group para cuotas
   de usuario y grupo respectivamente. Consulte fstab(5) para mas
   informacion. Aunque la pagina de manual de fstab(5) diga que puede
   especificar otra ubicacion para los ficheros de cuota, no se recomienda
   hacerlo debido a que las diversas herramientas de gestio cuotas no parecen
   sobrellevar esto adecuadamente.

   Hecho todo esto puede reiniciar su sistema con el nuevo kernel. /etc/rc
   ejecutara automaticamente los comandos apropiados para crear los ficheros
   de cuota iniciales que requieran todas las entradas en en /etc/fstab, asi
   que no hay necesidad de crear ficheros de cuota de longitud cero.

   En el curso normal de operaciones no se le deberia pedir que ejecute
   quotacheck(8), quotaon(8) o quotaoff(8) manualmente. Sin embargo, tal vez
   quiera leer sus paginas de manual para familiarizarse con su
   funcionamiento.

  18.14.2. Configuracion de limites de cuota

   Una vez que tenga configurado su sistema para usar cuotas verifique que en
   realidad esten habilitadas. Una manera sencilla de hacer esto es ejecutar:

 # quota -v

   Debe ver un resumen de una sola linea de uso del disco y los limites de
   cuota actuales para cada sistema de ficheros donde esten habilitadas las
   cuotas.

   Ahora puede iniciar la asignacion de limites de cuota con edquota(8).

   Tiene varias opciones para imponer limites en el espacio de disco que un
   usuario o grupo puede ocupar, y cuantos ficheros pueden crear. Puede
   limitar el uso de disco basandose en el espacio en disco (cuotas de
   bloque) o en el numero de ficheros (cuotas de inodo) o una combinacion de
   ambas. Cada uno de estos limites a su vez se divide en dos categorias:
   limites duros y suaves.

   Un limite duro no puede ser excedido. Una vez que un usuario alcanza su
   limite duro no puede realizar mas ubicaciones en el sistema de ficheros en
   cuestion. Por ejemplo, si el usuario tiene un limite duro de 500 kbytes en
   un sistema de ficheros y esta utilizando 490 kbytes, el usuario solo puede
   ocupar otros 10 kbytes. Un intento de ocupar 11 kbytes mas fallara.

   Los limites suaves pueden excederse por un periodo Este periodo de tiempo
   recibe el nombre de periodo de gracia, que por defecto es una semana. Si
   un usuario sobrepasa su periodo de gracia el limite suave se convertira en
   un limite duro y no se permitir'n usos de disco adicionales. Cuando el
   usuario devuelve su cuota de uso de recursos a un punto por debajo de su
   limite suave el periodo de gracia se reinicia.

   Veamos un ejemplo de uso de edquota(8). Si se usa edquota(8) se entra en
   el el editor declarado en la variable de entorno EDITOR, o en el editor vi
   si no ha modificado el valor por defecto de la variable EDITOR, para que
   pueda editar los limites de cuota.

 # edquota -u test

 Quotas for user test:
 /usr: kbytes in use: 65, limits (soft = 50, hard = 75)
         inodes in use: 7, limits (soft = 50, hard = 60)
 /usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
         inodes in use: 0, limits (soft = 50, hard = 60)

   Deberia ver dos lineas por cada sistema de ficheros que tenga habilitadas
   las cuotas. Una linea para los limites de bloque y una linea para limites
   de inodo. Por ejemplo, para elevar los limites de este usuario de un
   limite suave de 50 y un limite duro de 75 a un limite suave de 500 y un
   limite duro de 600, cambie:

 /usr: kbytes in use: 65, limits (soft = 50, hard = 75)

   por:

 /usr: kbytes in use: 65, limits (soft = 500, hard = 600)

   Los nuevos limites de cuota se aplicaran en cuanto salga del editor.

   Algunas veces se quieren activar limites de cuota en un rango de UIDs.
   Esto puede realizarse con la opcion -p de edquota(8). Primero asigne el
   limite de cuota deseado a un usuario y luego ejecute edquota -p protouser
   startuid-enduid. Por ejemplo, si el usuario test tiene el limite de cuota
   deseado, el siguiente comando puede usarse para duplicar esos limites de
   cuota para los UIDs de 10,000 hasta 19,999:

 # edquota -p test 10000-19999

   Para mas informacion consulte la pagina de manual edquota(8).

  18.14.3. Revision de los limites de cuota y uso de disco

   Puede usar quota(1) o repquota(8) para revisar los limites de cuota y uso
   del disco. El comando quota(1) le permitira revisar cuotas individuales de
   usuario o grupo y uso del disco. Un usuario puede solamente examinar su
   propia cuota y la cuota de un grupo al que pertenezca. Solamente el
   superusuario puede ver las cuotas de todos los usuarios y grupos.
   repquota(8) permite obtener un resumen de todas las cuotas y uso del disco
   de todos los sistemas de ficheros con cuotas habilitadas.

   En el siguiente ejemplo vemos la salida de quota -v para un usuario que
   tiene limites de cuota en dos sistemas de ficheros.

 Disk quotas for user test (uid 1002):
      Filesystem  usage    quota   limit   grace   files   quota   limit   grace
            /usr      65*     50      75   5days       7      50      60
        /usr/var       0      50      75               0      50      60

   En el sistema de ficheros /usr del ejemplo este usuario esta actualmente
   15 kbytes sobre su limite suave de 50 kbytes y le quedan 5 dias de su
   periodo de gracia. Observe el asterisco, * que indica que el usuario esta
   actualmente por encima de su limite de cuota.

   Normalmente los sistemas de ficheros en los que el usuario no este
   utilizando espacio en disco no se mostraran en la salida del comando
   quota(1), incluso si tiene un limite de cuota asignado para esos sistemas
   de fichero. La opcion -v desplegara esos sistemas de ficheros, en nuestro
   ejemplo el sistema de ficheros /usr/var.

  18.14.4. Cuotas en NFS

   Las cuotas son impuestas por el subsistema de cuotas en el servidor NFS.
   El daemon rpc.rquotad(8) facilita la informacion a quota(1) en los
   clientes NFS, permitiendoles a los usuarios de esas maquinas ver sus
   estadisticas de cuota.

   Habilite rpc.rquotad en /etc/inetd.conf del siguiente modo:

 rquotad/1      dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad

   Y reinicie inetd:

 # kill -HUP `cat /var/run/inetd.pid`

18.15. Cifrado de particiones de disco

   Escrito por Lucky Green.

   FreeBSD ofrece un alto grado de proteccion contra el acceso no autorizado
   a los datos. Los Permisos de fichero y MAC (Mandatory Access Control,
   controles de acceso obligatorio, consulte el Capitulo 16, Mandatory Access
   Control) ayudan a evitar que otros tengan acceso no autorizado a los datos
   mientras el sistema operativo esta funcionando y la computadora esta
   encendida. Sin embargo los permisos impuestos por el sistema operativo son
   irrelevantes si un atacante tiene acceso fisico al sistema y puede
   simplemente mover el disco duro de la computadora a otro sistema para
   copiar y analizar datos sensibles.

   Independientemente de como un atacante pueda conseguir acceso a un disco
   duro a a un sistema apagado, el cifrado de disco basado en GEOM (GEOM
   Based Disk Encryption, gbde) puede proteger los datos de los sistemas de
   ficheros del sistema incluso contra atacantes muy decididos y con recursos
   adecuados a su disposicion. A diferencia de otros metodos de cifrado mas
   dificiles de usar, que cifran unicamente ficheos individuales, gbde cifra
   sistemas de ficheros completos de forma transparente. Ni un solo texto en
   limpio llega a tocar el disco duro.

  18.15.1. Habilitar gbde en el kernel

    1. Conviertase en root

       La configuracion de gbde requiere privilegios de superusuario.

 % su -
 Password:

    2. Verifique la version del sistema operativo

       gbde(4) requiere FreeBSD 5.0 o posterior.

 # uname -r
 5.0-RELEASE

    3. Anada soporte de gbde(4) al fichero de configuracion de su kernel

       Anada la siguiente linea al fichero de configuracion de su kernel con
       el editor que prefiera:

       options GEOM_BDE

       Configure, recompile e instale el kernel de FreeBSD. Este proceso se
       detalla en el Capitulo 8, Configuracion del kernel de FreeBSD.

       Reinicie con el nuevo kernel.

  18.15.2. Preparacion del disco duro cifrado

   El siguiente ejemplo asume que anade a su sistema un disco duro nuevo que
   contendra una sola particion cifrada. Esta particion se montara como
   /private. gbde puede usarse tambien para cifrar /home y /var/mail, pero
   esto requeriria instrucciones mas complejas que las que se pretenden dar
   en esta introduccion.

    1. Anada el nuevo disco

       Instale el nuevo disco en el sistema como se explico en la
       Seccion 18.3, "Anadir discos". En nuestro ejemplo hemos anadido una
       nueva particion de disco como /dev/ad4s1c. Los dispositivos
       /dev/ad0s1* representan particiones FreeBSD estandar que i existian
       previamente en el sistema.

 # ls /dev/ad*
 /dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
 /dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
 /dev/ad0s1a     /dev/ad0s1d     /dev/ad4

    2. Cree un directorio para los ficheros "lock" de gbde

 # mkdir /etc/gbde

       Los ficheros "lock" de gbde contienen informacion que gbde requiere
       para acceder a las particiones cifradas. Sin el acceso a los ficheros
       "lock" gbde no podra descifrar los datos alojados en la particion
       cifrada sin una cantidad significativa de trabajo, tarea para la que
       ademas no le resultara de ayuda este software. Cada particion cifrada
       utiliza un fichero "lock" separado.

    3. Inicialice la particion gbde

       Una particion gbde debe inicializarse antes de que pueda utilizarse.
       Esta inicializacion solo debe hacerse una vez:

 # gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c

       gbde(8) abrira su editor para que pueda configurar las opciones de
       configuracion que se le presentaran en una plantilla. Para utilizar
       UFS1 o UFS2, ponga el sector_size a 2048:

 $FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $
 #
 # El tamano de sector (sector size) es la unidad de datos mas
 # pequena que podra leer o escribir.  Si la elige demasiado
 # pequena reducira el rendimiento y la cantidad de espacio
 # util.  Si la elige demasiado grande puede hacer que los sistemas
 # de ficheros no funcionen.  512 es el tamano minimo y
 # siempre funciona.  Si va a usar UFS utilice
 #
 sector_size     =       2048
 [...]

       gbde(8) le pedira dos veces que escriba la contrasena que debe usarse
       para asegurar los datos. La contrasena debe ser la misma las dos
       veces. La capacidad de gbde de proteger sus datos depende integramente
       de la calidad de la contrasena que elija. [11]

       El fichero gbde init crea un fichero "lock" para su particion gbde,
       que en nuestro ejemplo esta en /etc/gbde/ad4s1c.

  Atencion:

       Es imprescindible que los ficheros "lock" de gbde deben respaldarse
       junto con el contenido de cualquier particion cifrada. Aunque la sola
       accio de borrar un fichero "lock" no puede evitar que un atacante
       motivado descifre una particion gbde sin el fichero "lock", el
       propietario legitimo no podra acceder a los datos en la particion
       cifrada sin una cantidad notable de trabajo, que es necesario senalar
       que no entra dentro de las funciones de gbde(8) ni de su disenador.

    4. Conecte al kernel la particion cifrada

 # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

       Se le pedira la contrasena que elijio al inicializar la particion
       cifrada. El nuevo dispositivo cifrado aparecera en /dev como
       /dev/nombre_de_dispositivo.bde:

 # ls /dev/ad*
 /dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
 /dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
 /dev/ad0s1a     /dev/ad0s1d     /dev/ad4        /dev/ad4s1c.bde

    5. Cree un sistema de ficheros en el dispositivo cifrado

       Una vez el dispositivo cifrado esta conectado al kernel puede crear un
       sistema de ficheros en el dispositivo con newfs(8). Dado que es mas
       rapido inicializar un sistema de ficheros del nuevo UFS2 que un
       sistema de ficheros del tradicional UFS1, le recomendamos
       encarecidamente usar newfs(8) con la opcion -O2.

  Nota:

       La opcion -O2 es el valor por defecto en FreeBSD 5.1-RELEASE y
       siguientes.

 # newfs -U -O2 /dev/ad4s1c.bde

  Nota:

       newfs(8) debe ejecutarse en una particion gbde conectada, que podra
       identificar por la extension *.bde del nombre del dispositivo.

    6. Montar la particion cifrada

       Cree un punto de montaje para el sistema cifrado de ficheros.

 # mkdir /private

       Montar el sistema cifrado de ficheros.

 # mount /dev/ad4s1c.bde /private

    7. Verificar que el sistema cifrado de ficheros este disponible

       el sistema cifrado de ficheros deberia ser visible para df(1) y estar
       listo para su uso.

 % df -H
 Filesystem        Size   Used  Avail Capacity  Mounted on
 /dev/ad0s1a      1037M    72M   883M     8%    /
 /devfs            1.0K   1.0K     0B   100%    /dev
 /dev/ad0s1f       8.1G    55K   7.5G     0%    /home
 /dev/ad0s1e      1037M   1.1M   953M     0%    /tmp
 /dev/ad0s1d       6.1G   1.9G   3.7G    35%    /usr
 /dev/ad4s1c.bde   150G   4.1K   138G     0%    /private

  18.15.3. Montaje de sistemas cifrados de ficheros

   Todos los sistemas cifrados de ficheros deben reconectarse al kernel
   despues de cada arranque. Ademas, antes de poder utilizarlo debe revisarlo
   por si contuviera errores y montarlo. Todo el proceso debe ser ejecutado
   por el usuario root.

    1. Conectar la particion gbde al kernel

 # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

       Se le pedira la contrasena que elijio en la inicializacion de la
       particion cifrada gbde.

    2. Revision de errores en el sistema de ficheros

       Como que los sistemas cifrados de ficheros no pueden aparecer en
       /etc/fstab (lo que haria que fueran montados automaticamente), los
       sistemas de ficheros deben revisarse manualmente mediante fsck(8)
       antes de montarlos.

 # fsck -p -t ffs /dev/ad4s1c.bde

    3. Montar los sistemas cifrados de ficheros

 # mount /dev/ad4s1c.bde /private

       El sistema cifrado de ficheros esta listo para su uso.

    18.15.3.1. Montar automaticamente particiones cifradas

   Es posible usar un "script" para automatizar la conexion, revision y el
   montaje de una particion cifrada, pero por razones de seguridad el
   "script" no debe contener la contrasena de gbde(8). Se recomienda ejecutar
   esos "scripts" se ejecuten de forma manual proporcionando la contrasena
   via consola o ssh(1).

  18.15.4. Proteccion criptografica que usa gbde

   gbde(8) cifra el XXX sector payload usando AES de 128 bits en modo CBC.
   Cada sector en el disco se cifra con una clave AES diferente. Para mas
   informacion sobre el diseno criptografico de gbde, incluyendo como se
   derivan las claves de sector a partir de la contrasena consulte gbde(4).

  18.15.5. Problemas de compatibilidad

   sysinstall(8) es incompatible con dispositivos gbde cifrados. Todos los
   dispositivos *.bde deben desconectarse del kernel antes de iniciar
   sysinstall(8) o se "congelara" durante la prueba inicial de dispositivos.
   Para desconectar el el dispositivo cifrado de nuestro ejemplo haga lo
   siguiente:

 # gbde detach /dev/ad4s1c

   Tenga en cuenta tambien que, como vinum(4) no utiliza el subsistema
   geom(4), no es posible usar gbde en volumenes vinum.

     ----------------------------------------------------------------------

   [10] Mantener el disco accesible a sistemas operativos que pudieran
   necesitar acceder al mismo en algun momento.

   [11] Si quiere ayuda para seleccionar una contrasena segura que ademas sea
   facil de recordar visite el sitio web Diceware Passphrase.

Capitulo 19. GEOM: Marco de trabajo modular de transformacion de discos

   Escrito por Tom Rhodes.
   Tabla de contenidos

   19.1. Sinopsis

   19.2. Introduccion a GEOM

   19.3. RAID0 - Distribucion por bandas

   19.4. RAID1 - Replicacion

   Traduccion de Enrique Matias Sanchez <cronopios@gmail.com>.

19.1. Sinopsis

   Este capitulo explica el uso de discos bajo el marco de trabajo GEOM en
   FreeBSD. Esto incluye las principales utilidades de control de RAID que
   usan el marco de trabajo para su configuracion. Este capitulo no se
   adentrara en un examen en profundidad de como GEOM maneja o controla la
   E/S, el subsistema subyacente, o el codigo. Esta informacion se
   proporciona en la pagina de manual geom(4) y sus diversas referencias VEA
   TAMBIEN. Este capitulo tampoco es una guia definitiva de configuraciones
   RAID. Solo se examinan las clasificaciones de RAID que puede usar GEOM.

   Tras leer este capitulo, sabra:

     * Que tipo de soporte para RAID esta disponible a traves de GEOM.

     * Como utilizar las utilidades base para configurar, mantener, y
       manipular los diversos niveles de RAID.

     * Como replicar, unir, cifrar, y conectar remotamente dispositivos de
       disco por medio de GEOM.

     * Como solucionar problemas con los discos adscritos al marco de trabajo
       GEOM.

   Antes de leer este capitulo, deberia:

     * Entender como trata FreeBSD a los dispositivos de disco (Capitulo 18,
       Almacenamiento).

     * Saber como configurar e instalar un nuevo nucleo de FreeBSD
       (Capitulo 8, Configuracion del kernel de FreeBSD).

19.2. Introduccion a GEOM

   GEOM permite el acceso y control de clases -sectores de arranque maestros
   (MBR), etiquetas BSD, etc- por medio del uso de proveedores, o de los
   ficheros especiales de /dev. Capaz de trabajar con varias configuraciones
   de RAID por software, GEOM proporcionara transparentemente acceso al
   sistema operativo y las utilidades del mismo.

19.3. RAID0 - Distribucion por bandas

   Escrito por Tom Rhodes y Murray Stokely.

   La distribucion por bandas (striping) es un metodo que se usa para
   combinar varias unidades de disco en un unico volumen. En muchos casos,
   esto se hace usando controladoras por hardware. El subsistema de discos
   GEOM proporciona soporte por software para RAID0, tambien conocido como
   discos configurados en bandas.

   En un sistema RAID0, los datos se dividen en bloques que son escritos por
   todas las unidades de la agrupacion. En lugar de tener que esperar a que
   el sistema escriba 256 kB en un disco, un sistema RAID0 puede escribir
   simultaneamente 64 kB en cada uno de los cuatro discos, ofreciendo un
   superior rendimiento de E/S. Este rendimiento se puede mejorar aun mas
   usando varias controladoras de disco.

   Cada uno de los discos de una banda RAID0 debe ser del mismo tamano, pues
   las peticiones de E/S estan intercaladas para leer o escribir en varios
   discos en paralelo.

             Ilustracio de la distribucion por bandas de los discos
   Procedimiento 19.1. Creacion de una banda de discos ATA sin formatear
    1. Cargue el modulo geom_stripe:

 # kldload geom_stripe.ko

    2. Asegurese de que existe un punto de montaje adecuado. Si este volumen
       se convertira en una particion raiz, utilice temporalmente otro punto
       de montaje, como /mnt.

 # mkdir /mnt

    3. Determine los nombres de dispositivo de los discos que seran
       configurados en bandas, y cree el nuevo dispositivo de banda. Por
       ejemplo, podria utilizar la siguiente orden para configurar en bandas
       dos discos ATA sin usar ni particionar: /dev/ad2 y /dev/ad3.

 # gstripe label -v st0 /dev/ad2 /dev/ad3

    4. Si se va a usar este volumen como dispositivo raiz para arrancar el
       sistema, debe ejecutar la siguiente orden antes de crear el sistema de
       ficheros:

 # fdisk -vBI /dev/stripe/st0

    5. Se debe crear una tabla de particiones en el nuevo volumen con la
       siguiente orden:

 # bsdlabel -wB /dev/stripe/st0

    6. Aademas del dispositivo st0, este proceso deberia haber creado otros
       dos dispositivos en el directorio /dev/stripe, incluyendo st0a y st0c.
       Ahora se debe crear un sistema de ficheros en el dispositivo st0a
       usando la siguiente orden newfs:

 # newfs -U /dev/stripe/st0a

       Por la pantalla se deslizaran muchos numeros, y al cabo de unos pocos
       segundos, el proceso habra finalizado. El volumen ha sido creado y
       esta preparado para ser montado:

   Se puede usar la siguiente orden para montar manualmente una banda de
   discos recien creada:

 # mount /dev/stripe/st0a /mnt

   Para montar automaticamente este sistema de ficheros distribuido por
   bandas durante el proceso de arranque, ponga la informacion del volumen en
   el fichero /etc/fstab:

 # echo "/dev/stripe/st0a /mnt ufs rw 2 2" \
     >> /etc/fstab

   Tambien se debe cargar automaticamente durante la inicializacion del
   sistema el modulo geom, anadiendo una linea a /boot/loader.conf:

 # echo 'geom_stripe_load="YES"' >> /boot/loader.conf

19.4. RAID1 - Replicacion

   La replicacion es una tecnologin que usan muchas empresas y usuarios para
   hacer copias de respaldo de sus datos sin interrupciones. Cuando hay una
   replica, simplemente significa que el discoB replica al discoA. O, quiza
   el discoC+D replica al discoA+B. Al margen de la configuracion de los
   discos, lo importante es que la informacion de un disco o particion esta
   siendo replicada. Mas adelante se podria restaurar esa informacion mas
   facilmente, hacerse una copia de respaldo sin provocar intrrupciones de
   servicio o acceso, e incluso almacenarla fisicamente en una caja fuerte
   para datos.

   Para empezar, asegurese de que el sistema tiene dos unidades de disco del
   mismo tamano, eb este ejercicio se supone que son discos SCSI de acceso
   directo (da(4)).

   Comience por instalar FreeBSD en el primer disco con solo dos particiones.
   Una deberia ser una particion de intercambio, de dos veces el tamano de la
   RAM, y todo el espacio restante se dedicara al sistema de ficheros raiz
   (/). Es posible tener particiones aparte para otros puntos de montajes;
   sin embargo, esto multiplicara por diez el nivel de dificultad, debido a
   la alteracion manual de las opciones de bsdlabel(8) y fdisk(8).

   Reinicie y espere a que el sistema se inicie por completo. Una vez haya
   finalizado este proceso, ingrese como usuario root.

   Cree el dispositivo /dev/mirror/gm y enlacelo a /dev/da1:

 # gmirror label -vnb round-robin gm0 /dev/da1

   El sistema deberia responder con:

 Metadata value stored on /dev/da1.
 Done.

   Inicialice GEOM, esto cargara el modulo del nucleo
   /boot/kernel/geom_mirror.ko:

 # gmirror load

  Nota:

   Esta orden deberia haber creado en el directorio /dev/mirror los nodos de
   dispositivo gm0, gm0s1, gm0s1a, y gm0s1c.

   Instale una etiqueta generica fdisk y el codigo de arranque en el recien
   creado dispositivo gm0:

 # fdisk -vBI /dev/mirror/gm0

   Ahora instale la informacion bsdlabel generica:

 # bsdlabel -wB /dev/mirror/gm0s1

  Nota:

   Si hay varias slices (rodajas) y particiones, necesitara modificar las
   opciones de las dos ordenes anteriores. Deben coincidir con la slice y
   tamano de particion del otro disco.

   Utilice la utilidad newfs(8) para crear un sistema de ficheros predefinido
   en nodo de dispositivo gm0s1a:

 # newfs -U /dev/mirror/gm0s1a

   Esto deberia haber hecho que el sistema mostrara alguna informacion y un
   punado de numeros. Esto es bueno. Examine la pantalla por si hay algun
   mensaje de error y monte el dispositivo en el punto de montaje /mnt:

 # mount /dev/mirror/gm0s1a /mnt

   Ahora mueva todos los datos del disco de arranque a este nuevo sistema de
   ficheros. Este ejemplo usa las ordenes dump(8) y restore(8); aunque, dd(1)
   tambien deberia funcionar en este escenario. Evitamos utilizar tar(1)
   porque no copiara el codigo de arranque. De ese modo, el fallo estaria
   garantizado.

 # dump -L -0 -f- / |(cd /mnt && restore -r -v -f-)

   Se debe hacer esto para cada sistema de ficheros. Simplemente ponga el
   sistema de ficheros adecuado en la ubicacion correcta al ejecutar la orden
   mencionada.

   Ahora edite el fichero replicado /mnt/etc/fstab y elimine o comente el
   fichero swap [12]. Cambie la informacion del otro sistema de ficheros para
   que utilice el nuevo disco. Vea el siguiente ejemplo:

 # Device                Mountpoint      FStype  Options         Dump    Pass#
 #/dev/da0s2b             none            swap    sw              0       0
 /dev/mirror/gm0s1a       /               ufs     rw              1       1

   Ahora cree un fichero boot.conf tanto en la particion actual como en la
   nueva particion raiz. Este fichero "ayudara" al BIOS del sistema a
   arrancar la unidad correcta:

 # echo "1:da(1,a)/boot/loader" > /boot.config

 # echo "1:da(1,a)/boot/loader" > /mnt/boot.config

  Nota:

   Lo hemos colcoado en ambas particiones raiz para asegurar un arranque
   correcto. Si por alguna razon el sistema no pudiera leer en la nueva
   particion raiz, esta disponible un arranque a prueba de fallos.

   Ahora agregue la siguiente linea al nuevo /boot/loader.conf:

 # echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf

   Esto le dice a la utilidad loader(8) que cargue el geom_mirror.ko durante
   la inicializacion del sistema.

   Reinicie el sistema:

 # shutdown -r now

   Si todo ha ido bien, el sistema deberia haber arrancado desde el
   dispositivo gm0s1a, y un prompt login deberia estar a la espera. Si algo
   fue mal, consulte la seccion posterior de resolucion de problemas. Ahora
   agregue el disco da0 al dispositivo gm0:

 # gmirror configure -a gm0
 # gmirror insert gm0 /dev/da0

   La opcion -a le dice a gmirror(8) que use sincronizacion automatica; por
   ejemplo, que replique las escrituras en disco automaticamente. La pagina
   de manual explica como reconstruir y reemplazar discos, aunque utiliza
   data en vez de gm0.

  19.4.1. Resolucion de problemas

    19.4.1.1. El sistema se niega a arrancar

   Si el sistema arranca hasta un prompt similar a:

 ffs_mountroot: can't find rootvp
 Root mount failed: 6
 mountroot>

   Reinicie la maquina utilizando el boton de encendido o el de reset. En el
   menu de arranque, seleccione la opcion seis (6). Esto llevara al sistema a
   un prompt de loader(8). Cargue el modulo del nucleo manualmente:

 OK? load geom_mirror.ko
 OK? boot

   Si esto funciona, es que por alguna razon el modulo no se cargaba
   correctamente. Ponga:

 options GEOM_MIRROR

   en el fichero de configuracion del nucleo, recompile y reinstale. Esto
   deberia solucionar el problema.

     ----------------------------------------------------------------------

   [12] Debe advertirse que comentar la entrada del fichero swap en fstab
   probablemente le obligara a reestablecer una manera diferente de habilitar
   el espacio de intercambio. Consulte Seccion 11.4, "Anadir espacio swap"
   para mas informacion.

Capitulo 20. El Gestor de Volumenes Vinum

   Tabla de contenidos

   20.1. Sinopsis

   20.2. Los Discos son Demasiado Pequenos

   20.3. Cuellos de Botella en el Acceso

   20.4. Integridad de Datos

   20.5. Objetos Vinum

   20.6. Ejemplos

   20.7. Esquema de Nombres de los Objetos

   20.8. Configuracion de Vinum

   20.9. Uso de Vinum en el Sistema de Ficheros Raiz

20.1. Sinopsis

20.2. Los Discos son Demasiado Pequenos

   Texto Original de Greg Lehey.

20.3. Cuellos de Botella en el Acceso

   Figura 20.1. Organizacion Concatenada
   Organizacion Concatenada

   Figura 20.2. Organizacion con "Striping"
   Organizacion con "Striping"

20.4. Integridad de Datos

   Figura 20.3. Organizacion en RAID-5
   Organizacion en RAID-5

20.5. Objetos Vinum

  20.5.1. Consideraciones sobre el Tamano de los Volumenes

  20.5.2. Almacenamiento Redundante de Datos

  20.5.3. Cuestiones Relacionadas con el Rendimiento

  20.5.4. Which Plex Organization?

  20.5.5. Vinum Plex Organizations

20.6. Ejemplos

  20.6.1. El Fichero de Configuracion

   Figura 20.4. Un Volumen Vinum Sencillo
   Un Volumen Vinum Sencillo

  20.6.2. Increased Resilience: Mirroring

   Figura 20.5. Un Volumen Vinum Replicado
   Un Volumen Vinum Replicado

  20.6.3. Optimizacion del Rendimiento

   Figura 20.6. Un Volumen Vinum en "Striping"
   Un Volumen Vinum en "Striping"

  20.6.4. Resilience and Performance

   Figura 20.7. Un Volumen Vinum Replicado y en "Striping"
   Un Volumen Vinum Replicado y en "Striping"

20.7. Esquema de Nombres de los Objetos

     * The control devices /dev/vinum/control and /dev/vinum/controld, which
       are used by vinum(8) and the Vinum daemon respectively.

  20.7.1. Creacion de un Sistema de Ficheros

20.8. Configuracion de Vinum

  20.8.1. Arranque

    20.8.1.1. Arranque Automatico

20.9. Uso de Vinum en el Sistema de Ficheros Raiz

  20.9.1. Inicio de Vinum en el Arranque para que Incluya el Sistema de Ficheros
  Raiz

  20.9.2. Configuracion de un Volumen Raiz en Vinum Accesible Para la Secuencia
  de Arranque

  20.9.3. Ejemplo de Raiz basado en Vinum

  20.9.4. Solucion de Problemas

    20.9.4.1. La Secuencia de Arranque Carga Pero el Sistema no Arranca

    20.9.4.2. Solo se Carga la Secuencia Primaria de Arranca

    20.9.4.3. No Hay Arranque, la Secuencia de Arranque da un Panico

  20.9.5. Particularidades de Vinum en FreeBSD 4.x

Capitulo 21. Virtualizacion

   Contributed by Murray Stokely.
   Tabla de contenidos

   21.1. *

21.1. *

   Pendiente de traduccion.

Capitulo 22. Localizacion - Uso y configuracion de I18N/L10N

   Contribuido por Andrey Chernov.
   Reescrito por Michael C. Wu.
   Tabla de contenidos

   22.1. Sinopsis

   22.2. Lo basico

   22.3. Uso de la localizacion

   22.4. Compilacion de programas con soporte para I18N

   22.5. Localizacion de FreeBSD a idiomas especificos

   Traduccion de Enrique Matias Sanchez <cronopios@gmail.com>.

22.1. Sinopsis

   FreeBSD es un proyecto muy distribuido, que cuenta con usuarios y
   contribuidores por todo el mundo. Este capitulo examina las
   funcionalidades de internacionalizacion y localizacion de FreeBSD que
   permiten llevar a cabo su trabajo a los usuarios no angloparlantes. Hay
   muchos aspectos en la implementacion de la i18n, tanto en los niveles de
   sistema como de aplicacion, asi que cuando sea conveniente dirigiremos al
   lector a fuentes de documentacion mas especificas.

   Tras leer este capitulo, sabra:

     * Como se codifican los distintos idiomas y "locales" en los sistemas
       operativos modernos.

     * Como configurar las "locales " para su interprete de ordenes.

     * Como configurar la consola para idiomas distintos al ingles.

     * Como emplear efizcamente el sistema de ventanas X en distintos
       idiomas.

     * Donde encontrar mas informacion sobre como escribir aplicaciones que
       sigan la i18n.

   Antes de leer este capitulo, deberia:

     * Saber como instalar aplicaciones adicionales de terceras partes
       (Capitulo 4, Instalacion de aplicaciones: <<packages>> y ports).

22.2. Lo basico

  22.2.1. ?Que es I18N/L10N?

   Los desarrolladores acortaron la palabra internacionalizacion al termino
   I18N, contando el numero de letras entre la primera y la ultima letra.
   L10N sigue el mismo esquema, y procede de "localizacion". Combinados, los
   metodos, protocolos y aplicaciones de I18N/L10N permiten a los usuarios
   usar el idioma de su eleccion.

   Las aplicaciones I18N se programan usando herramientas de I18N de
   bibliotecas. Estas permiten a los desarrolladores escribir un fichero
   sencillo y traducir los menus y textos contenidos a cada idioma. Animamos
   fervientemente a los programadores a que sigan esta convencion.

  22.2.2. ?Por que deberia usar I18N/L10N?

   I18N/L10N se usa siempre que quiera ver, introducir o procesar datos en
   idiomas distintos al ingles.

  22.2.3. ?Que idiomas estan soportados en el proyecto de I18N?

   La I18N y L10N no son especificos de FreeBSD. En la actualidad, uno puede
   elegir entre la mayoria de los principales idiomas del mundo, incluyendo
   pero sin limitarse a ellos: chino, aleman, japones, coreano, frances,
   ruso, vietnamita y otros.

22.3. Uso de la localizacion

   En todo su esplendor, la I18N no es especifica de FreeBSD, y es una
   convencion. Le animamos a que ayude a FreeBSD siguiendo esta convencion.

   Las opciones de localizacion se basan en tres terminos principales: codigo
   de idioma, codigo de pais y codificacion. Los nombres de las "locales" se
   construyen a partir de estas tres partes como sigue:

 CodigoDelIdioma
       _CodigoDelPais.
       Codificacion

  22.3.1. Codigos de idioma y pais

   Para localizar un sistema FreeBSD a un idioma concreto (o cualquier otro
   sistema de tipo UNIX(R) que soporte I18N), los usuarios necesitar
   averiguar los codigos del pais e idioma concreto (los codigos de pais le
   dicen a las aplicaciones que variedad del idioma dado deben usar). Ademas,
   los navegadores web, servidores SMTP/POP, servidores web, etc toman
   decisiones basandose en ellos. Los siguientes son ejemplos de codigos de
   idioma/pais:

       Codigo de idioma/pais                      Descripcion                 
   en_US                          Ingles - Estados Unidos de America          
   ru_RU                          Ruso de Rusia                               
   zh_TW                          Chino tradicional de Taiwan                 

  22.3.2. Codificaciones

   Algunos idiomas usan codificaciones distintas al ASCII que son de 8 bits,
   caracteres anchos o multibyte; consulte multibyte(3) para conocer mas
   detalles. Algunas aplicaciones mas antiguas no los reconocen y los
   confunden con caracteres de control. Las aplicaciones modernas normalmente
   reconocen los caracteres de 8 bits. Dependiendo de la implementacion, los
   usuarios pueden necesitar compilar una aplicacion con soporte para
   caracteres anchos o multibyte, o configurarlo correctamente. Para poder
   introducir y procesar caracteres anchos o multibyte, la Coleccion de
   "Ports" de FreeBSD proporciona diferentes programas a cada idioma.
   Dirijase a la documentacion de I18N del " port" de FreeBSD
   correspondiente.

   Especificamente, los usuarios necesitan mirar la documentacion de la
   aplicacion para decidir como configurarla correctamente o pasar valores
   correctos al configure/Makefile/compilador.

   Algunas cosas a tener presentes son:

     * Los juegos de caracteres de tipo char de C especificos para el idioma
       (consulte multibyte(3)), v.g. ISO-8859-1, ISO-8859-15, KOI8-R, CP437.

     * Las codificaciones anchas o multibyte, v.g. EUC, Big5 .

   Puede comprobar la lista activa de juegos de caracteres en el Registro
   IANA.

  Nota:

   Las versiones 4.5 y posteriores de FreeBSD usan en su lugar codificaciones
   de la "locale" compatibles con X11.

  22.3.3. Aplicaciones I18N

   En el sistema de paquetes y ports de FreeBSD, las aplicaciones I18N se han
   denominado con I18N en su nombre para una facil identificacion. Sin
   embargo, no siempre soportan el idioma necesitado.

  22.3.4. Configuracion de las "locales"

   Normalmente basta con exportar el valor del nombre de la "locale" como
   LANG en el interprete de ordenes de la sesion. Esto se podria hacer en el
   fichero ~/.login_conf del usuario o en el fichero de inicio del interprete
   de ordenes del usuario (~/.profile, ~/.bashrc , ~/.cshrc). No es necesario
   configurar las otras variables de localizacion como LC_CTYPE o LC_CTIME.
   Dirijase a la documentacion de FreeBSD especifica de su idioma para mas
   informacion.

   Deberia configurar las siguientes dos variables de entorno en sus ficheros
   de configuracion:

     * LANG para las funciones de la familia setlocale(3) de POSIX(R)

     * MM_CHARSET para el juego de caracteres MIME de las aplicaciones

   Esto comprende la configuracion del interprete de ordenes del usuario, la
   configuracion especifica de la aplicacion y la configuracion de X11.

    22.3.4.1. Metodos de configuracion de las " locales"

   Hay dos metodos para configurar las " locales", que se describen aqui
   abajo. El primero (que es el recomendado) es asignar las variables de
   entorno en una clase de sesion, y el segundo es anadir las asignaciones de
   las variables de entorno al fichero de inicio del interprete de ordenes
   del sistema.

      22.3.4.1.1. Metodo de las clases de sesion

   Este metodo permite asignar las variables de entorno necesarias para el
   nombre de las "locales " y el juego de caracteres MIME de una sola vez
   para todos los posibles interpretes de ordenes, en vez de anadir
   asignaciones especificas en los ficheros de inicio de cada uno de los
   interpretes de ordenes. La configuracion a nivel de usuario la puede
   realizar el propio usuario, mientras que la configuracion a nivel de
   administrador precisa de permisos de superusuario.

        22.3.4.1.1.1. Configuracion a nivel de usuario

   Esto es un ejemplo minimalista de un fichero .login_conf de la carpeta de
   inicio de un usuario, que contiene las dos variables configuradas para la
   codificacion Latin-1:

 me:\
         :charset=ISO-8859-1:\
         :lang=de_DE.ISO8859-1:

   Esto es un ejemplo de un .login_conf que configura las variables para el
   chino tradicional en la codificacion BIG-5. Observe que se configuran
   muchas mas variables porque algunos programas no respetan correctamente
   las variables de las "locales" para el chino, el japones y el coreano.

 #Users who do not wish to use monetary units or time formats
 #of Taiwan can manually change each variable
 me:\
         :lang=zh_TW.Big5:\
         :lc_all=zh_TW.Big:\
         :lc_collate=zh_TW.Big5:\
         :lc_ctype=zh_TW.Big5:\
         :lc_messages=zh_TW.Big5:\
         :lc_monetary=zh_TW.Big5:\
         :lc_numeric=zh_TW.Big5:\
         :lc_time=zh_TW.Big5:\
         :charset=big5:\
         :xmodifiers="@im=xcin": #Setting the XIM Input Server

   Consulte la configuracion a nivel de administrador y login.conf(5) para
   conocer mas detalles.

        22.3.4.1.1.2. Configuracion a nivel de administrador

   Compruebe que la clase de sesion en /etc/login.conf establece el idioma
   adecuado. Asegurese de que estas opciones aparecen en /etc/login.conf :

 nombre_del_idioma:titulo_cuentas:\
         :charset=juego_de_caracteres_MIME:\
         :lang=nombre de la locale:\
         :tc=default:

   Asi que, si seguimos con nuestro ejemplo anterior que usaba Latin-1,
   tendria este aspecto:

 german:German Users Accounts:\
         :charset=ISO-8859-1:\
         :lang=de_DE.ISO8859-1:\
         :tc=default:

      Modificacion de las clases de sesion con vipw(8)

   Utilice vipw para anadir nuevos usuarios, y haga que la entrada tenga este
   aspecto:

 usuario:contrasena:1111:11:idioma:0:0:Nombre de usuario:/home/usuario:/bin/sh

      Modificacion de las clases de sesion con with adduser(8)

   Utilice adduser para anadir nuevos usuarios, y haga lo siguiente:

     * Establezca defaultclass = idioma en /etc/adduser.conf. Recuerde que en
       este caso debe introducir una clase default (por omision) para todos
       los usuarios de otros idiomas.

     * Una variante alternativa es contestar el idioma indicado cada vez que
       adduser(8) muestre

 Enter login class: default
                   []:

     * Otra alternativa es utilizar lo siguiente para cada usuario de un
       idioma diferente al que desee anadir:

 # adduser -class
                   idioma
                  

      Modificacion de las clases de sesion con pw(8)

   Si utiliza pw(8) para anadir nuevos usuarios, llamelo de esta manera:

 # pw useradd
               nombre_usuario -L
               idioma

      22.3.4.1.2. Metodo de los ficheros de inicio de los interpretes de ordenes

  Nota:

   No se recomienda este metodo porque precisa de una configuracion diferente
   para cada interprete de ordenes que se pueda elegir. Utilice en su lugar
   el metodo de las clases de sesion.

   Para anadir el nombre de la "locale " y el juego de caracteres MIME,
   simplemente establezca las dos variables de entorno mostradas abajo en los
   ficheros de inicio del interprete de ordenes /etc/profile y/o
   /etc/csh.login. Aqui abajo usaremos el idioma aleman como ejemplo:

   En /etc/profile:

 LANG=de_DE.ISO8859-1; export LANG
 MM_CHARSET=ISO-8859-1; export MM_CHARSET

   O en /etc/csh.login:

 setenv LANG de_DE.ISO8859-1
 setenv MM_CHARSET ISO-8859-1

   Como alternativa, puede anadir las instrucciones anteriores a
   /usr/share/skel/ dot.profile (similar a lo que se utilizo antes en
   /etc/profile ), o /usr/share/skel/dot.login (similar a lo que se utilizo
   antes en /etc/csh.login).

   Para X11:

   En $HOME/.xinitrc:

 LANG=de_DE.ISO8859-1; export LANG

   O:

 setenv LANG de_DE.ISO8859-1

   En funcion de su interprete de ordenes (vea mas arriba).

  22.3.5. Configuracion de la consola

   Para todos los juegos de caracteres representables con el tipo char en C,
   establezca los tipos de letra para la consola adecuados para el idioma en
   cuestion en /etc/rc.conf con:

 font8x16=nombre_del_tipo_de_letra
        
 font8x14=nombre_del_tipo_de_letra
 font8x8=nombre_del_tipo_de_letra

   Aqui, el nombre_del_tipo_de_letra se toma del directorio /usr/share/
   syscons/fonts, sin el sufijo .fnt .

   Asegurese tambien de configurar los mapas de teclado y pantalla correctos
   para su juego de caracteres C por medio de sysinstall (/stand/sysinstall
   en versiones de FreeBSD anteriores a la 5.2). Una vez dentro de sysinstall
   , seleccione Configure , y despues Console . Como alternativa, puede
   anadir lo siguiente en /etc/rc.conf:

 scrnmap=nombre_del_mapa_de_pantalla
 keymap=nombre_del_mapa_de_teclado
 keychange="secuencia numero_tecla_de_funcion"

   Aqui, el nombre_del_mapa_de_pantalla se toma del directorio /usr/share/
   syscons/scrnmaps, sin el sufijo .scm . Normalmente es necesario un mapa de
   pantalla ("screenmap") con un tipo de letra correspondiente para poder
   extender de 8 a 9 bits la matriz de caracteres de una tarjeta VGA en un
   area pseudografica, es decir, desplazar las letras fuera de ese area si el
   tipo de letra de pantalla usa una columna de 8 bits.

   Si tiene habilitado el daemon moused por configurar esto en su /etc/
   rc.conf:

 moused_enable="YES"

   entonces estudie la informacion sobre el cursor del raton del siguiente
   parrafo.

   Por omision, el cursor del raton del controlador syscons(4) ocupa el
   intervalo 0xd0-0xd3 del juego de caracteres. Si su idioma usa este
   intervalo, necesita desplazar el intervalo del cursor fuera de el. En
   versiones de FreeBSD anteriores a la 5.0, introduzca la siguiente linea en
   la configuracion del nucleo:

 options         SC_MOUSE_CHAR=0x03

   En FreeBSD 4.4 y posteriores, introduzca la siguiente linea en
   /etc/rc.conf:

 mousechar_start=3

   Aqui, el nombre_del_mapa_de_teclado se toma del directorio /usr/share/
   syscons/keymaps, sin el sufijo .kbd . Si no esta seguro de cual mapa de
   teclado usar, puede usar kbdmap(1) para probar los mapas de teclado sin
   reiniciar.

   Normalmente se necesita el keychange para programar las teclas de funcion
   para que coincidan con el tipo de terminal seleccionado, porque las
   secuencias de las teclas de funcion no se pueden definir en el mapa de
   teclado.

   Asegurese tambien de configurar el tipo de terminal consola correcto en
   /etc/ttys para todas las entradas ttyv*. Las correspondencias predefinidas
   actualmente son:

               Juego de caracteres                    Tipo de terminal        
   ISO-8859-1 o ISO-8859-15                    cons25l1                       
   ISO-8859-2                                  cons25l2                       
   ISO-8859-7                                  cons25l7                       
   KOI8-R                                      cons25r                        
   KOI8-U                                      cons25u                        
   CP437 (predeterminada en VGA)               cons25                         
   US-ASCII                                    cons25w                        

   Para los idiomas en caracteres anchos o multibyte, utilice el port
   correcto de FreeBSD en su directorio /usr/ports/idioma. Algunos ports
   aparecen como consola mientras que el sistema los ve como una vtty serie,
   por lo tanto debe reservar suficientes vtty tanto para X11 como la consola
   pseudoserie. Aqui tiene una lista parcial de aplicaciones para usar otros
   idiomas en la consola:

              Idioma                              Ubicacion                   
   Chino tradicional (BIG-5)    chinese/big5con                               
   Japones                      japanese/kon2-16dot o japanese/mule-freewnn   
   Coreano                      korean/han                                    

  22.3.6. Configuracion de X11

   Aunque X11 no es parte del Proyecto FreeBSD, hemos incluido aqui algo de
   informacion para usuarios de FreeBSD. Para mas detalles, acuda al sitio
   web de Xorg o del servidor X11 que utilice.

   En ~/.Xresources, puede afinar mas las opciones de I18N especificas de la
   aplicacion (v.g., tipos de letra, menus, etc).

    22.3.6.1. Visualizacion de los tipos de letra

   Instale el servidor Xorg (x11-servers/xorg-server o el servidor
   XFree86(TM) (x11-servers/XFree86-4-Server), y despues instale los tipos de
   letra TrueType(R) del idioma. La configuracion de la "locale" correcta
   para el idioma deberia permitirle ver el idioma seleccionado en menus y
   similares.

    22.3.6.2. Introduccion de caracteres no ingleses

   El protocolo Metodo de Introduccion X11 (XIM) es un nuevo estandar para
   todos los clientes X11. Todas las aplicaciones X11 deberian estar escritas
   como clientes XIM que reciben entradas de servidores XIM. Hay varios
   servidores XIM disponibles para distintos idiomas.

  22.3.7. Configuracion de la impresora

   Hay algunos juegos de caracteres de tipo char de C que estan normalmente
   codificados por hardware en las impresoras. Los juegos de caracteres
   anchos o multibyte precisan de una configuracion especial y recomendamos
   el uso de apsfilter. Tambien puede convertir el documento a los formatos
   PostScript(R) o PDF usando conversores especificos del idioma.

  22.3.8. El nucleo y los sistemas de ficheros

   El sistema de ficheros rapido (FFS) de FreeBSD funciona bien a 8 bits, asi
   que se puede usar con cualquier juego de caracteres de tipo char de C (vea
   multibyte(3)), pero no hay almacenado ningun nombre de juego de caracteres
   en el sistema de ficheros; es decir, son 8 bits en bruto y no sabe nada
   acerca del orden de codificacion. Oficialmente, FFS no soporta todavia
   ninguna forma de juegos de caracteres anchos o multibyte. Sin embargo,
   algunos juegos de caracteres anchos o multibyte tienen parches
   independientes para habilitar dicho soporte en FFS. Son solamente
   soluciones temporales no portables o "hacks", y hemos decicido no
   incluirlas en el arbol de codigo fuente. Dirijase a los sitios web de los
   respectivos idiomas para encontrar mas informacion y los parches.

   El sistema de ficheros MS-DOS(R)de FreeBSD tiene la capacidad configurable
   de convertir entre los juegos de caracteres MS-DOS(R), Unicode y los
   juegos de caracteres seleccionados del sistema de ficheros de FreeBSD. Vea
   mount_msdos(8) para mas detalles.

22.4. Compilacion de programas con soporte para I18N

   Muchos ports de FreeBSD han sido portados con soporte para I18N. Algunos
   de ellos estan marcados con -I18N en el nombre del port. Estos y muchos
   otros programas tienen incorporado soporte para I18N y no necesitan
   ninguna consideracion especial.

   Sin embargo, algunas aplicaciones como MySQL necesitan tener el Makefile
   configurado con el juego de caracteres especifico. Esto se hace
   normalmente en el Makefile o pasando un valor a configure en el codigo
   fuente.

22.5. Localizacion de FreeBSD a idiomas especificos

  22.5.1. Idioma ruso (codificacion KOI8-R)

   Contribuido originalmente por Andrey Chernov.

   Para mas informacion sobre la codificacion KOI8-R, vea las Referencias
   KOI8-R (Juego de caracteres rusos para la red).

    22.5.1.1. Configuracion de la "locale"

   Ponga las siguientes lineas en su fichero ~/.login_conf:

 me:My account:\
         :charset=KOI8-R:\
         :lang=ru_RU.KOI8-R:

   Vea anteriormente en este mismo capitulo ejemplos de configuracion de las
   locales.

    22.5.1.2. Configuracion de la consola

     * En versiones de FreeBSD anteriores a la 5.0, anada la liguiente linea
       en el fichero de configuracion del nucleo:

 options         SC_MOUSE_CHAR=0x03

       En FreeBSD 4.4 y posteriores introduzca la siguiente linea en
       /etc/rc.conf:

 mousechar_start=3

     * Utilice las siguientes opciones en /etc/rc.conf:

 keymap="ru.koi8-r"
 scrnmap="koi8-r2cp866"
 font8x16="cp866b-8x16"
 font8x14="cp866-8x14"
 font8x8="cp866-8x8"

     * Para cada entrada ttyv* en /etc/ttys, utilice cons25r como el tipo de
       terminal.

   Vea anteriormente en este mismo capitulo ejemplos de configuracion de la
   consola.

    22.5.1.3. Configuracion de la impresora

   Dado que la mayoria de las impresoras con caracteres rusos tienen un
   codigo de pagina CP866 en hardware, es necesario un filtro de salida
   especial para convertir de KOI8-R a CP866. Tal filtro es instalado por
   omision como /usr/libexec/lpr/ru/koi2alt. Una entrada de impresora rusa
   /etc/printcap deberia tener este aspecto:

 lp|Russian local line printer:\
         :sh:of=/usr/libexec/lpr/ru/koi2alt:\
         :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:

   Consulte printcap(5) para una explicacion detallada.

    22.5.1.4. Sistema de ficheros MS-DOS(R) y nombres de ficheros en ruso

   La siguiente entrada fstab(5) de ejemplo habilita el soporte para nombres
   de fichero en ruso en los sistemas de ficheros MS-DOS(R) montados:

 /dev/ad0s2      /dos/c  msdos   rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0

   La opcion -L selecciona el nombre de la "locale" usada, y -W establece la
   tabla de conversion de caracteres. Para usar la opcion -W , asegurese de
   montar /usr antes que la particion MS-DOS(R), porque las tablas de
   conversion se ubican en /usr/libdata/msdosfs. Para mas informacion, vea la
   pagina de manual mount_msdos(8).

    22.5.1.5. Configuracion de X11

    1. Antes haga la configuracion de las "locales" para la consola como se
       ha explicado.

  Nota:

       La "locale " rusa KOI8-R puede no funcionar con versiones antiguas
       (anteriores a la 3.3) de XFree86(TM). Xorg es ahora la version
       predefinida del sistema de ventanas X en FreeBSD. Esto no deberia ser
       un problema salvo que este usando una version antigua de FreeBSD.

    2. Si utiliza Xorg, instale el paquete x11-fonts/xorg-fonts-cyrillic.

       Compruebe la seccion "Files" de su fichero /etc/X11/xorg.conf. Se
       deben anadir las siguientes lineas antes de ninguna otra entrada
       FontPath :

 FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
 FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
 FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"

       Si utiliza un modo de video de alta resolucion, intercambie las lineas
       75 dpi y 100 dpi.

    3. Para activar un teclado ruso, anada lo siguiente a la seccion
       "Keyboard" de su fichero XF86Config.

       Para XFree86(TM) 3.X:

 XkbLayout  "ru"
 XkbOptions "grp:caps_toggle"

       Para Xorg (o XFree86(TM) 4.X):

 Option "XkbLayout"   "us,ru"
 Option "XkbOptions"  "grp:toggle"

       Asegurese tambien de que XkbDisable este desactivado (comentado) alli.

       Para grp:caps_toggle la tecla para pasar entre la codificacion rusa y
       la latina sera BloqMayus . La antigua funcion de BloqMayus todavia
       esta disponible a traves de May+BloqMayus (solamente en modo latino).
       Para grp:toggle la tecla para pasar entre la codificacion rusa y la
       latina sera Alt derecha. grp:caps_toggle no funciona en Xorg por
       alguna razon desconocida.

       Si en su teclado dispone de teclas "Windows(R) ", y observa que
       algunas teclas no alfanumericas estan mapeadas incorrectamente en el
       modo ruso, anada la siguiente linea en su fichero XF86Config.

       Para XFree86(TM) 3.X:

 XkbVariant "winkeys"

       Para Xorg (o XFree86(TM) 4.X):

 Option "XkbVariant" ",winkeys"

  Nota:

       El teclado XKB ruso puede no funcionar con versiones antiguas de
       XFree86(TM) , vea la nota anterior para mas informacion. El teclado
       XKB ruso puede no funcionar tampoco con aplicaciones no localizadas.

  Nota:

   Las aplicaciaones minimamente localizadas deberian llamar una funcion
   XtSetLanguageProc (NULL, NULL, NULL); al principio del programa.

   Vea KOI8-R para X Window para mas instrucciones sobre la localizacion de
   aplicaciones X11.

  22.5.2. Localizacion al chino tradicional para Taiwan

   El proyecto FreeBSD-Taiwan tiene una Guia de chino para FreeBSD en
   http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/ que utiliza muchos
   ports chinos. El editor actual del FreeBSD Chinese HOWTO es Shen
   Chuan-Hsing <statue@freebsd.sinica.edu.tw>.

   Chuan-Hsing Shen <statue@freebsd.sinica.edu.tw > ha creado la Coleccion de
   FreeBSD en chino (CFC) usando zh-L10N-tut de FreeBSD-Taiwan. Los paquetes
   y los guiones estan disponibles en
   ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/.

  22.5.3. Localizacion al idioma aleman (para todos los idiomas ISO 8859-1)

   Slaven Rezic <eserte@cs.tu-berlin.de> ha escrito un tutorial de como usar
   las dieresis en una maquina FreeBSD. El tutorial esta disponible en
   http://www.de.FreeBSD.org/de/umlaute/.

  22.5.4. Localizacion a los idiomas japones y coreano

   Para el japones, dirijase a http://www.jp.FreeBSD.org/, y para el coreano,
   acuda a http://www.kr.FreeBSD.org/.

  22.5.5. Documentacion sobre FreeBSD en otros idiomas aparte del ingles

   Algunos contribuidores de FreeBSD han traducido partes de FreeBSD a otros
   idiomas. Estan disponibles a traves de enlaces en el sitio principal o en
   /usr/share/doc .

Capitulo 23. Lo ultimo de lo ultimo

   Restructured, reorganized, and parts updated by Jim Mock.
   Original work by Jordan Hubbard, Poul-Henning Kamp, John Polstra y Nik
   Clayton.
   Tabla de contenidos

   23.1. Sinopsis

   23.2. FreeBSD-CURRENT vs. FreeBSD-STABLE

   23.3. Sincronizacion de su codigo fuente

   23.4. Uso de make world

   23.5. Redes pequenas

23.1. Sinopsis

   Pendiente de Traduccion

23.2. FreeBSD-CURRENT vs. FreeBSD-STABLE

  23.2.1. Current

   Pendiente de Traduccion

  23.2.2. Stable

   Pendiente de Traduccion

23.3. Sincronizacion de su codigo fuente

   Pendiente de Traduccion

23.4. Uso de make world

   Pendiente de Traduccion

23.5. Redes pequenas

   Pendiente de Traduccion

                        Parte IV. Comunicaciones en red

   FreeBSD es uno de los sistemas operativos mas utilizados como servidores
   en red de alto rendimiento. Los siguientes capitulos cubren:

     * Comunicaciones serie

     * PPP y PPP sobre Ethernet

     * Correo electronico

     * Servidores de red

     * Otros aspectos avanzados de red

   Estos capitulos estan disenados para leerse segun van haciendo falta. No
   tienen por que leerse en un determinado orden, ni tiene por que leerlos
   todos antes de poder usar FreeBSD en un entorno de red.

   Tabla de contenidos

   24. Comunicaciones serie

                24.1. Sinopsis

                24.2. Introduccion

                24.3. Terminales

                24.4. Servicio dial-in

                24.5. Servicio dial-out

                24.6. Configurando la consola serie

   25. PPP y SLIP

                25.1. Sinopsis

                25.2. Uso de User PPP

                25.3. Uso de Kernel PPP

                25.4. Uso de PPP sobre Ethernet (PPPoE)

                25.5. Uso de PPP sobre ATM (PPPoA)

                25.6. Uso de SLIP

   26. Cortafuegos

                26.1. *

   27. Correo Electronico

                27.1. Sinopsis

                27.2. Utilizacion del correo electronico

                27.3. Configuracion de sendmail

                27.4. Sustitucion del Agente de Transferencia de Correo

                27.5. Depuracion de Problemas

                27.6. Conceptos Avanzados

                27.7. SMTP con UUCP

                27.8. Configuracion para solamente enviar correo

                27.9. Utilizacion del correo con una conexion mediante modem
                analogico (dial-up)

                27.10. Autentificacion utilizando SMTP

                27.11. Agente de Correo de Usuario

                27.12. Manejo de fetchmail

                27.13. Uso de procmail

   28. Servidores de red

                28.1. *

   29. Networking avanzado

                29.1. Resumen

                29.2. Pasarelas y "routers"

                29.3. Redes sin cables ("wireless")

                29.4. Bluetooth

                29.5. Puenteado

                29.6. NFS

                29.7. Ejecucion sin disco duro

                29.8. RDSI

                29.9. NIS/YP

                29.10. DHCP

                29.11. DNS

                29.12. NTP

                29.13. Traduccion de direcciones de red

                29.14. El "Superservidor" inetd

                29.15. Linea IP paralela (PLIP)

                29.16. IPv6

                29.17. ATM en FreeBSD 5.X

Capitulo 24. Comunicaciones serie

   Tabla de contenidos

   24.1. Sinopsis

   24.2. Introduccion

   24.3. Terminales

   24.4. Servicio dial-in

   24.5. Servicio dial-out

   24.6. Configurando la consola serie

24.1. Sinopsis

   UNIX(R) siempre ha tenido soporte para comunicacion serie. De hecho, las
   primeras maquinas UNIX(R) dependian de lineas serie para tener interaccion
   con el usuario. Las cosas han cambiado mucho desde esos dias cuando la
   "terminal" promedio consistia de una terminal serie de
   10-caracteres-por-segundo, impresora y teclado. Este capitulo cubrira
   algunas de las maneras en las que FreeBSD utiliza comunicaciones serie.

   Despues de leer este capitulo, usted entendera:

     * Como conectar terminales a su sistema FreeBSD.

     * Como utilizar un modem para marcar a equipos remotos.

     * Como permitir a usuarios remotos entrar a su sistema con un modem.

     * Como arrancar su sistema desde una consola serie.

   Antes de leer este capitulo usted deberia:

     * Saber como configurar e instalar un nuevo kernel (Capitulo 8,
       Configuracion del kernel de FreeBSD).

     * Entender procesos y permisos UNIX(R) (Capitulo 3, Conceptos basicos de
       Unix).

     * Tener acceso al manual tecnico para el hardware serie (modem o tarjeta
       multipuerto) que le gustaria utilizar con FreeBSD.

24.2. Introduccion

  24.2.1. Terminologia

   bps

           Bits por segundo - la tasa a la cual los datos son transmitidos

   DTE

           Data Terminal Equipment (Equipo terminal de datos) - por ejemplo,
           su computadora

   DCE

           Data Communications Equipment (Equipo de comunicacion de datos) -
           su modem

   RS-232

           Estandar EIA para hardware de comunicacion serie

   Cuando se habla de tasa de comunicacion de datos, esta seccion no usa el
   termino "baud". Baud se refiere al numero de estados de transicion
   electricos que pueden realizarse en un periodo de tiempo, mientras que
   "bps" (bits por segundo) es el termino correcto a usar (al menos parece no
   molestar demasiado a los mas aferrados).

  24.2.2. Cables y puertos

   Para conectar un modem o terminal a su sistema FreeBSD necesitara un
   puerto serie en su computadora y el cable apropiado para conectar a su
   dispositivo serie. Si ya esta familiarizado con su hardware y el cable que
   requiere, puede saltarse esta seccion.

    24.2.2.1. Cables

   Existen diferentes tipos de cables serie. Los dos tipos mas comunes para
   nuestros propositos son cables null-modem y cables RS-232 estandar
   ("normal"). La documentacion de su hardware deberia describir el tipo de
   cable requerido.

      24.2.2.1.1. Cables null-modem

   Un cable null-modem pasa algunas senales, como "tierra", normalmente, pero
   cambia otras senales. Por ejemplo, el pin "envio de datos" en un extremo
   va al pin "recepcion de datos" en el otro.

   Si le gusta fabricar sus propios cables, puede construir un cable
   null-modem para utilizar con terminales. Esta tabla muestra los nombres de
   senal y numeros de pin en un conector DB-25.

       Senal         Pin #                            Pin #         Senal     
   SG            7             conecta a          7             SG            
   TD            2             conecta a          3             RD            
   RD            3             conecta to         2             TD            
   RTS           4             conecta a          5             CTS           
   CTS           5             conecta a          4             RTS           
   DTR           20            conecta a          6             DSR           
   DCD           8                                6             DSR           
   DSR           6             conecta a          20            DTR           

  Nota:

   Conectar "Data Set Ready" (DSR) y "Data Carrier Detect" (DCD) internamente
   en la capucha del conector, y entonces a "Data Terminal Ready" (DTR) en la
   capucha remota.

      24.2.2.1.2. Cables estandard RS-232C

   Un cable serie estandar pasa todas las senales RS-232C normalmente. Esto
   es, el pin "envio de datos" en un extremo va al pin "envio de datos" en el
   otro extremo. Este es el tipo de cable a utilizar para conectar un modem a
   su sistema FreeBSD, y tambien es apropiado para algunas terminales.

    24.2.2.2. Puertos

   Puertos serie son los dispositivos a traves de los cuales los datos son
   transferidos entre una computadora FreeBSD y la terminal. Esta seccion
   describe los tipos de puertos que existen y como son referidos en FreeBSD.

      24.2.2.2.1. Tipos de puertos

   Existen varios tipos de puertos serie. antes de comprar o construir un
   cable, necesita asegurarse que coincida con los puertos en su terminal y
   en su sistema FreeBSD.

   La mayoria de las terminales tienen puertos DB25. Computadoras personales,
   incluyendo PCs corriendo FreeBSD, tienen puertos DB25 o DB9. Si tiene una
   tarjeta multipuertos serie para su PC, tal vez tenga puertos RJ-12 o
   RJ-45.

   Vea la documentacion que acompana su hardware para las especificaciones
   sobre el tipo de puerto en uso. Una inspeccion visual del puerto tambien
   funciona en la mayoria de los casos.

      24.2.2.2.2. Nombres de puerto

   En FreeBSD, se accesa cada puerto serie a traves de una entrada en el
   directorio /dev. Existen dos tipos de entradas:

     * Puertos de llamada-entrante son llamados /dev/ttydN donde N es el
       numero de puerto, iniciando desde cero. Generalmente, los puertos de
       llamada-entrante se utilizan para terminales. Los puertos de
       llamada-entrante requieren que la linea serie especifique la senal
       data carrier detect (DCD) para funcionar correctamente.

     * Puertos de llamada-saliente son llamados /dev/cuaaN. Usualmente no se
       utilizan los puertos de llamada-saliente para terminales, solo para
       modems. Puede utilizar el puerto de llamada-saliente si el cable serie
       o la terminal no soporta la senal de carrier detect.

   Si tiene conectada una terminal al primer puerto serie (COM1 en
   MS-DOS(R)), entonces usara /dev/ttyd0 para referirse a la terminal. Si la
   terminal esta en el segundo puerto serie (tambien conocido como COM2),
   utilice /dev/ttyd1, y asi sucesivamente.

  24.2.3. Configuracion del kernel

   FreeBSD soporta cuatro puertos serie por omision. en el mundo MS-DOS(R)
   estos son conocidos como COM1, COM2, COM3, y COM4. FreeBSD actualmente
   soporta tarjetas de interfaz serie "tontas", como la BocaBoard 1008 y
   2016, asi como tarjetas multipuerto mas inteligentes como las fabricadas
   por Digiboard y Stallion Technologies. De cualquier manera, el kernel por
   omision solo busca por los puertos COM estandares.

   Para ver si su kernel reconoce cualquiera de sus puertos serie, mire los
   mensajes mientras el kernel esta arrancando, o utilice el comando
   /sbin/dmesg para repetir los mensajes de arranque del kernel. En
   particular busque por mensajes que inicien con el caracter sio.

  Sugerencia:

   Para ver solamente los mensajes que contienen la palabra sio, use el
   comando:

 # /sbin/dmesg | grep 'sio'

   Por ejemplo, en un sistema con cuatro puertos serie, estos son los
   mensajes de arranque del kernel especificos de puerto serie:

 sio0 at 0x3f8-0x3ff irq 4 on isa
 sio0: type 16550A
 sio1 at 0x2f8-0x2ff irq 3 on isa
 sio1: type 16550A
 sio2 at 0x3e8-0x3ef irq 5 on isa
 sio2: type 16550A
 sio3 at 0x2e8-0x2ef irq 9 on isa
 sio3: type 16550A

   Si su kernel no reconoce todos sus puertos serie, probablemente necesitara
   configurar un kernel FreeBSD personalizado para su sistema. Para
   informacion detallada sobre configurar su kernel, por favor vea
   Capitulo 8, Configuracion del kernel de FreeBSD.

   Las lineas de dispositivo relevantes para su fichero de configuracion del
   kernel podrin verse de esta manera, para FreeBSD 4.X:

 device          sio0    at isa? port IO_COM1 irq 4
 device          sio1    at isa? port IO_COM2 irq 3
 device          sio2    at isa? port IO_COM3 irq 5
 device          sio3    at isa? port IO_COM4 irq 9

   y de esta manera, para FreeBSD 5.X:

 device          sio

   Puede comentar o remover completamente lineas de dispositivos que no tenga
   en el caso de FreeBSD 4.X; para FreeBSD 5.X tiene que editar su fichero
   /boot/device.hints para configurar sus puertos serie. Por favor dirijase a
   la pagina de manual sio(4) para mayor informacion sobre puertos serie y
   configuracion de tarjetas multipuertos. Tenga cuidado si esta utilizando
   un fichero de configuracion que fue usado anteriomente para una version
   diferente de FreeBSD porque las banderas de dispositivo y la sintaxis han
   cambiado entre versiones.

  Nota:

   port IO_COM1 es una substitucion para port 0x3f8, IO_COM2 es 0x2f8,
   IO_COM3 es 0x3e8, y IO_COM4 es 0x2e8, las cuales son direcciones de puerto
   comunes para sus respectivos puertos serie; interrupciones 4,3,5 y 9 son
   peticiones comunes de lineas de interrupcion. Note tambien que puertos
   serie regulares no pueden compartir interrupciones en PCs con bus ISA (las
   tarjetas multipuerto tienen electronicos que les permiten a los 16550A's
   compartir una o dos lineas de peticiones de interrupcion).

  24.2.4. Archivos especiales de dispositivo

   La mayoria de dispositivos en el kernel son accesados a traves de
   "ficheros especiales de dispositivo", los cuales estan localizados en el
   directorio /dev. Los dispositivos sio son accesados a traves de los
   dispositivos /dev/ttydN (dial-in) y /dev/cuaaN (call-out). FreeBSD provee
   tambien dispositivos de inicializacion (/dev/ttyidN y /dev/cuaiaN) y
   dispositivos de bloqueo (/dev/ttyldN y /dev/cualaN). Los dispotivos de
   inicializacion son utilizados para inicializar los parametros de
   comunicacion de puerto cada vez que un puerto es abierto, como crtscts
   para modems que utilizan senalizacion RTS/CTS para control de flujo. Los
   dispositivos de bloqueo son utilizados para bloquear banderas en puertos y
   prevenir que usuarios o programas cambien ciertos parametros; vea las
   paginas de manual termios(4), sio(4), y stty(1) para informacion de las
   propiedades de terminales, bloqueo e inicializacion de dispositivos y
   aplicacion de opciones de terminal, respectivamente.

    24.2.4.1. Creando ficheros de dispositivo especiales

  Nota:

   FreeBSD 5.0 incluye el sistema de ficheros devfs(5) el cual crea
   automaticamente nodos de dispositivos segun se necesiten. si esta
   corriendo una version de FreeBSD con devfs habilitado entonces puede
   saltarse esta seccion.

   Un script de shell llamado MAKEDEV en el directorio /dev administra los
   ficheros especiales de dispositivo. Para utilizar MAKEDEV para crear un
   fichero especial de dispositivo dial-up para COM1 (port 0), cd a /dev y
   ejecute el comando MAKEDEV ttyd0. De la misma manera, para crear ficheros
   especiales de dispositivo para COM2 (port 1), utilice MAKEDEV ttyd1.

   MAKEDEV no crea solamente el fichero especial de dispositivo /dev/ttydN
   tambien crea los nodos /dev/cuaaN, /dev/cuaiaN, /dev/cualaN, /dev/ttyldN,
   y /dev/ttyidN.

   Despues de crear ficheros especiales de dispositivo nuevos, asegurese de
   revisar los permisos en los ficheros (especialmente los ficheros
   /dev/cua*) para asegurarse que solamente los usuarios que deben tener
   acceso a esos ficheros especiales de dispositivo puedan leer y escribir en
   ellos - probablemente no desee permitir al usuario promedio utilizar sus
   modems para marcar al exterior. Los permisos por omision en los ficheros
   /dev/cua* deberian ser suficientes:

 crw-rw----    1 uucp     dialer    28, 129 Feb 15 14:38 /dev/cuaa1
 crw-rw----    1 uucp     dialer    28, 161 Feb 15 14:38 /dev/cuaia1
 crw-rw----    1 uucp     dialer    28, 193 Feb 15 14:38 /dev/cuala1

   Estos permisos permiten al usuario uucp y usuarios en el grupo dialer
   utilizar dispositivos call-out.

  24.2.5. Configuracion de puerto serie

   El dispositivo ttydN (o cuaaN) es el dispositivo regular que usted deseara
   abrir para sus aplicaciones. Cuando un proceso abre el dispositivo, tendra
   un conjunto por omision de propiedades de terminal E/S. Puede ver estas
   propiedades con el comando

 # stty -a -f /dev/ttyd1

   Cuando cambia las propiedades de este dispositivo, las propiedades son
   efectivas hasta que el dispositivo es cerrado. Cuando es reabierto regresa
   a las propiedades por omision. Para realizar cambios al conjunto por
   omision, usted puede abrir y ajustar las propiedades del dispositivo de
   "estado inicial" . Por ejemplo, para activar el modo CLOCAL, comunicacion
   de 8 bits y control de flujo XON/XOFF por omision para ttyd5, teclee:

 # stty -f /dev/ttyid5 clocal cs8 ixon ixoff

   La inicializacion para todo el sistema de los dispositivos serie es
   controlada en /etc/rc.serial. Este fichero afecta las propiedades por
   omision de dispositivos serie.

   Para prevenir que ciertas propiedades sean cambiadas por una aplicacion,
   haga ajustes al dispositivo "bloquear estado". Por ejemplo, para confinar
   la velocidad en ttyd5 a 57600 bps, teclee:

 # stty -f /dev/ttyld5 57600

   Ahora, una aplicacion que abra ttyd5 y trate de cambiar la velocidad del
   puerto se mantendra con 57600 bps.

   Naturalmente, deberia crear los dispositivos de estado inicial y bloqueo
   de estado escribible unicamente para la cuenta root .

24.3. Terminales

   Contribuido porSean Kelly.

   Las terminales proveen una manera conveniente y de bajo coste de accesar
   su sistema FreeBSD cuando no se encuentra en la consola de la computadora
   o en una red conectada. Esta seccion describe como utilizar terminales con
   FreeBSD.

  24.3.1. Usos y tipos de terminales

   Los sistemas originales UNIX(R) no tenin consolas. En su lugar la gente se
   firmaba y corria programas a traves de terminales conectadas a los puertos
   serie de la computadora. Es bastante similar a usar un modem y un programa
   de terminal para marcar hacia un sistema remoto para hacer trabajo en modo
   texto.

   Las PCs actuales tienen consolas con graficos de alta calidad, pero la
   habilidad para establecer una sesion en un puerto serie todavia existe en
   casi cualquier sistema operativo UNIX(R) al dia de hoy; FreeBSD no es la
   excepcion. Utilizando una terminal conectada a un puerto serie libre,
   usted puede accesar y correr cualquier programa de texto que podria correr
   normalmente en la consola o en una ventana xterm en el sistema X Window.

   Para el usuario corporativo, se pueden conectar muchas terminales a un
   sistema FreeBSD y ponerlas en los escritorios de sus empleados. Para un
   usuario casero, una computadora de reserva, como una IBM PC mas antigua o
   una Macintosh(R), puede ser una terminal cableada a una computadora mas
   poderosa corriendo FreeBSD. Puede convertir lo que de otra manera seria
   una computadora de un solo usuario en un poderoso sistema de usuarios
   multiples.

   Para FreeBSD, existen tres clases de terminales:

     * Terminales tontas

     * PCs actuando como terminales

     * Terminales X

   Las subsecciones siguientes describen cada tipo.

    24.3.1.1. Terminales tontas

   Terminales tontas son piezas de hardware especializadas que le permiten
   conectar a computadoras a traves de lineas serie. Son llamadas "tontas"
   porque solo tienen poder computacional suficiente para desplegar, enviar y
   recibir texto. No puede ejecutar ningun programa en ellas. Es la
   computadora a la cual se conectan la que tiene todo el poder para correr
   editores de texto, compiladores, correo electronico, juegos, y demas.

   Existen cientos de tipos de terminales tontas hechas por muchos
   fabricantes, incluyendo VT-100 de Digital Equipment Corporation y WY-75 de
   Wyse. Cualquier tipo funcionara con FreeBSD. Algunas terminales superiores
   pueden incluso desplegar graficos, pero solo ciertos paquetes de software
   pueden tomar ventaja de estas funciones avanzadas.

   Las terminales tontas son populares en ambientes de trabajo donde los
   trabajadores no necesitan acceso a aplicaciones graficas como las que
   provee el sistema X Window.

    24.3.1.2. PCs actuando como terminales

   Si una terminal tonta tiene apenas la habilidad para desplegar, enviar y
   recibir texto, entonces ciertamente cualquier computadora personal de
   reserva puede ser una terminal tonta. Todo lo que necesita es el cable
   apropiado y algun software de emulacion de terminal para correr en la
   computadora.

   Tal configuracion es popular en hogares. Por ejemplo, si su consorte se
   encuentra ocupado trabajando en la consola de su sistema FreeBSD, usted
   puede realizar algun trabajo en modo texto al mismo tiempo desde una
   computadora personal menos poderosa conectada como una terminal al sistema
   FreeBSD.

    24.3.1.3. Terminales X

   Las terminales X son el tipo mas sofisticado de terminal disponible. En
   lugar de conectar a un puerto serie, usualmente se conectan a una red como
   Ethernet. En lugar de ser relegadas a aplicaciones de modo texto pueden
   desplegar aplicaciones X.

   Hemos introducido terminales X solo por complementar. Sin embargo, este
   capitulo no cubre instalacion, configuracion o uso de terminales X.

  24.3.2. Configuracion

   Esta seccion describe lo que necesita para configurar en su sistema
   FreeBSD y permitirle habilitar sesiones de entrada en una terminal. Asume
   que ya tiene configurado su kernel para soportar el puerto serie al cual
   la terminal esta conectada-y que la tiene conectada.

   Recuerde del Capitulo 12, El proceso de arranque en FreeBSD que el proceso
   init es responsable del control e inicializacion de todos los procesos al
   inicio del sistema. Una de las tareas ejecutadas por init es leer el
   fichero /etc/ttys e iniciar un proceso getty en las terminales
   disponibles. El proceso getty es responsable de leer un nombre de entrada
   e iniciar el programa login .

   Asi, para configurar terminales para su sistema FreeBSD los siguientes
   pasos deben hacerse como root:

    1. Agregue una linea a /etc/ttys para la entrada en el directorio /dev
       para el puerto serie si todavia no se encuentra ahi.

    2. Especifique que /usr/libexec/getty sea ejecutado en el puerto, y
       especifique el tipo apropiado de getty desde el fichero /etc/gettytab
       .

    3. Especifique el tipo de terminal por omision.

    4. Ponga el puerto a "on."

    5. Especifique si el puerto debe ser o no "seguro."

    6. Obligue a init a releer el fichero /etc/ttys .

   Como un paso opcional, tal vez desee crear un tipo getty personalizado
   para utilizar en el paso 2 mediante una entrada en /etc/gettytab. Este
   capitulo no explica como realizarlo; por lo que se le exhorta a leer las
   paginas de manual gettytab(5) y getty(8) para mayor informacion.

    24.3.2.1. Agregando una entrada a /etc/ttys

   El fichero /etc/ttys lista todos los puertos en su sistema FreeBSD donde
   quiere permitir logins. Por ejemplo, la primera consola virtual ttyv0
   tiene una entrada en este fichero. Puede firmarse en la consola utilizando
   esta entrada. Este fichero tambien contiene entradas para las otras
   consolas virtuales, puertos serie y pseudo-ttys. Para una terminal
   conectada por cable, solo liste la entrada /dev del puerto serie sin la
   parte de /dev (por ejemplo, /dev/ttyv0 deberia estar listado como ttyv0).

   Una instalacion por omision de FreeBSD incluye un fichero /etc/ttys con
   soporte para los primeros cuatro puertos serie: ttyd0 hasta ttyd3. Si esta
   conectando una terminal a uno de esos puertos, no necesita agregar otra
   entrada.

   Ejemplo 24.1. Agregando entradas de terminal a /etc/ttys

   Suponga que quisieramos conectar dos terminales al sistema: una Wyse-50 y
   una vieja IBM PC 286 corriendo el software de terminal Procomm emulando
   una terminal VT-100. Conectamos la Wyse al segundo puerto serie y la 286
   al sexto puerto serie (un puerto en una tarjeta multipuerto serie). Las
   entradas correspondiente en el fichero /etc/ttys se verian como esto:

 ttyd11  "/usr/libexec/getty std.38400"2  wy503  on4  insecure5
 ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure
          

   1 El primer campo normalmente especifica el nombre de fichero especial de  
     la terminal como es hallado en /dev.                                     
   2 El segundo campo es el comando a ejecutar por esta linea, el cual es     
     usualmente getty(8). getty inicializa y abre la linea, establece la      
     velocidad, pregunta por un nombre de usuario y entonces ejecuta el       
     programa login(1) .                                                      
                                                                              
     El programa getty acepta un parametro (opcional) en su linea de comando, 
     el tipo getty. Un tipo getty configura caracteristicas en la linea de    
     terminal, como tasa de bps y paridad. El programa getty lee estas        
     caracteristicas desde el fichero /etc/gettytab.                          
                                                                              
     El fichero /etc/gettytab contiene muchas entradas para lineas de         
     terminal viejas y nuevas. En la mayoria de los casos, las entradas que   
     empiezan con el texto std funcionaran para terminales conectadas         
     fisicamente. Estas entradas ignoran la paridad. Existe una entrada std   
     por cada tasa de bps de 110 a 115200. Por supuesto puede agregar sus     
     propias entradas a este fichero. La pagina de manual gettytab(5) provee  
     mayor informacion.                                                       
                                                                              
     Al establecer el tipo getty en el fichero /etc/ttys, asegurese que las   
     propiedades de comunicaciones en la terminal concuerden.                 
                                                                              
     Para nuestro ejemplo, la Wyse-50 no usa paridad y conecta a 38400 bps.   
     La 286 PC no usa paridad y conecta a 19200 bps.                          
   3 El tercer campo es el tipo de terminal usualmente conectado a esa linea  
     tty. Para puertos dial-up, unknown o dialup son usados tipicamente en    
     este campo puesto que los usuarios pueden marcar practicamente con       
     cualquier tipo de terminal o de software. Para terminales conectadas     
     fisicamente, el tipo de terminal no cambia, asi que puede poner un tipo  
     de terminal real del fichero de base de datos termcap(5) en este campo.  
                                                                              
     Para nuestro ejemplo, la Wyse-50 utiliza el tipo de terminal real        
     mientras que la PC 286 corriendo Procomm sera puesta a emular una        
     VT-100.                                                                  
   4 El cuarto campo especifica si el puerto debe habilitarse. Poniendo on    
     aqui provocara que el proceso init inicie el programa en el segundo      
     campo, getty. Si pone off en este campo, no habra getty, y por           
     consecuencia ningun login en el puerto.                                  
   5 El ultimo campo es utilizado para especificar si el puerto es seguro.    
     Marcar un puerto como seguro significa que se confia en el lo suficiente 
     para permitir que la cuenta root (o cualquier cuenta con un ID de        
     usuario 0) se firme desde ese puerto. Los puertos inseguros no permiten  
     entradas de root. En un puerto inseguro, los usuarios deben firmarse     
     desde cuentas sin privilegios y entonces utilizar su(1) o un mecanismo   
     similar para acceder a privilegios de superusuario.                      
                                                                              
     Es altamente recomendable que utilize "insecure" incluso para terminales 
     que se encuentran detras de puertas con llave. Es muy sencillo entrar y  
     usar su si necesita privilegios de superusuario.                         

    24.3.2.2. Forzar init a que relea /etc/ttys

   Despues de realizar los cambios necesarios al fichero /etc/ttys deberia
   mandar una senal SIGHUP (hangup) al proceso init para forzarlo a releer su
   fichero de configuracion. Por ejemplo:

 # kill -HUP 1

  Nota:

   init siempre es el primer proceso que corre en un sistema, por lo tanto
   siempre tendra el PID 1.

   Si todo esta puesto correctamente, todos los cables en su lugar, y las
   terminales estan encendidas, entonces un proceso getty debe estar
   corriendo en cada terminal y deberia ver prompts de entrada en sus
   terminales en este punto.

  24.3.3. Determinando errores en su conexion

   Incluso con la mas meticulosa etencion al detalle, algo puede salir mal
   mientras se configura una terminal. Esta es una lista de sintomas y
   algunos arreglos sugeridos.

    24.3.3.1. No aparece prompt de login

   Asegurese que la terminal esta conectada y encendida, asegurese que se
   encuentra ejecutando un software de emulacion de terminal en el puerto
   serie correcto.

   Asegurese que el cable esta conectado firmemente tanto a la terminal como
   a la computadora FreeBSD. Asegurese que es el tipo correcto de cable.

   Asegurese que la terminal y FreeBSD concuerdan en la tasa de bps y
   propiedades de paridad. Si tiene una terminal de desplegado de video,
   asegurese que los controles de contraste y brillo esten encendidos. Si es
   una terminal de impresion, asegurese que papel y tinta se encuentren en
   forma.

   Asegurese que un proceso getty este corriendo y sirviendo la terminal. Por
   ejemplo, para obtener una lista de procesos getty con ps, teclee:

 # ps -axww|grep getty

   Deberia ver una entrada para la terminal. Por ejemplo, el siguiente
   desplegado muestra que un getty esta corriendo en el segundo puerto serie
   ttyd1 y esta utilizando la entrada std.38400 en /etc/gettytab:

 22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyd1

   Si no hay un proceso getty corriendo, asegurese que tiene habilitado el
   puerto en /etc/ttys. Recuerde tambien ejecutar kill -HUP 1 despues de
   modificar el fichero ttys.

   Si el proceso getty esta corriendo pero la terminal todavia no despliega
   un prompt de login, o si despliega un prompt pero no le permite escribir,
   su terminal o cable tal vez no soporte inicializacion por hardware. Trate
   cambiar la entrada en /etc/ttys de std.38400 a 3wire.38400 recuerde correr
   kill -HUP 1 despues de modificar /etc/ttys. La entrada 3wire es similar a
   std, pero ignora la inicializacion por harware. Tal vez necesite reducir
   la tasa de baudios o habilitar control de flujo por software cuando
   utilice 3wire para prevenir desbordamientos de buffer.

    24.3.3.2. Si aparece basura en lugar de un prompt de login

   Asegurese que la terminal y FreeBSD concuerdan en la tasa de bps y
   propiedades de paridad. Revise los procesos getty para asegurarse que el
   tipo correcto de getty esta en uso. Si no es asi, edite /etc/ttys y
   ejecute kill -HUP 1.

    24.3.3.3. Los caracteres aparecen doble; las contrasenas aparecen cuando se
    escriben

   Cambie la terminal (o el software de emulacion de terminal) de "half
   duplex" o "local echo" a "full duplex."

24.4. Servicio dial-in

   Contribuido por Guy Helmer.
   Adiciones por Sean Kelly.

   Configurar su sistema FreeBSD para servicio dial-in es muy similar a
   conectar terminales excepto que en lugar de lidiar con terminales se hace
   con modems.

  24.4.1. Modems externos vs. internos

   Los modems externos parecen ser mas convenientes para dial-up, debido a
   que los modems externos con frecuencia pueden ser configurados semi
   permanentemente via parametros almacenados en RAM no volatil y usualmente
   proveen indicadores luminosos que despliegan el estado de senales
   importantes RS-232. Luces parpadeantes impresionan a los visitantes, pero
   las luces son tambien utiles para ver si un modem se encuentra operando
   adecuadamente.

   Los modems internos usualmente carecen de RAM no volatil, entonces su
   configuracion puede estar limitada a especificar DIP switches. Si su modem
   interno cuenta con algun indicador luminoso de senales, es probablemente
   dificil observar las luces cuando el sistema esta cubierto y en su lugar.

    24.4.1.1. Modems y cables

   Si se encuentra utilizando un modem externo, entonces necesitara por
   supuesto un cable adecuado. Un cable serie estandar RS-232C debe ser
   suficiente mientras todas las senales normales sean cableadas:

     * Transmitted Data (TD)

     * Received Data (RD)

     * Request to Send (RTS)

     * Clear to Send (CTS)

     * Data Set Ready (DSR)

     * Data Terminal Ready (DTR)

     * Carrier Detect (CD)

     * Signal Ground (SG)

   FreeBSD necesita las senales RTS y CTS para control de flujo a velocidades
   mayores a 2400 bps, la senal CD para detectar cuando una llamada ha sido
   respondida o la linea ha sido colgada, y la senal DTR para reiniciar el
   modem despues de completar una sesion. Algunos cables son hechos sin
   incluir todas las senales necesarias, asi que si tiene problemas, como
   cuando una sesion no finaliza cuando la linea es colgada, tal vez el
   problema se deba al cable.

   Como otros sistemas operativos tipo UNIX(R), FreeBSD utiliza las senales
   de hardware para saber cuando una llamada ha sido contestada o una linea
   ha sido colgada y poder colgar y reiniciar el modem despues de una
   llamada. FreeBSD evita enviar comandos al modem o esperar por reportes de
   estado del modem. Si esta familiarizado con la conexion de modems una PC
   funcionando como BBS, tal ves esto parezca extrano.

  24.4.2. Consideraciones de interfaces serie

   FreeBSD soporta interfaces de comunicacion NS8250-, NS16450-, NS16550-, y
   NS16550A-basado en EIA RS-232C (CCITT V.24). Los dispositivos 8250 y 16450
   tienen buffers de un solo caracter. El dispositivo 16550 brinda un buffer
   de 16 caracteres, el cual permite un mejor desempeno del sistema. (Errores
   en 16550 simple impiden el uso del buffer de 16 caracteres, asi que
   utilice 16550A si es posible). Debido a que los dispositivos de buffer de
   un solo caracter requieren mas trabajo del sistema operativo que los
   dispotivos de buffer de 16 caracteres, las tarjetas de interfaz serie
   basadas en 16550A son mayormente preferidas. Si el sistema tiene muchos
   puertos serie activos o tendra una carga elevada, las tarjetas basadas en
   16550A son mejores para comunicaciones con baja tasa de error.

  24.4.3. Revision rapida

   Como con las terminales, init engendra un proceso getty para cada puerto
   serie configurado para conexiones dial-in. Por ejemplo, si un modem esta
   conectado a /dev/ttyd0, el comando ps ax podria mostrar esto:

  4850 ??  I      0:00.09 /usr/libexec/getty V19200 ttyd0

   Cuando un usuario marca la linea del modem y el modem conecta, la linea CD
   (Carrier Detect) es reportada por el modem. El kernel nota que se ha
   detectado una portadora y completa la apertura de getty del puerto. getty
   manda un prompt login: a la velocidad inicial de linea especificada. getty
   observa si se reciben caracteres validos, y, en una configuracion tipica,
   si encuentra basura (probablemente debido a que la velocidad de conexion
   del modem es diferente a la velocidad de getty), getty trata de ajustar la
   velocidad de la linea hasta que recibe caracteres razonables.

   Despues que el usuario entra su nombre de login, getty ejecuta
   /usr/bin/login, que completa la entrada preguntando por la contrasena del
   usuario y entonces inicia el shell del usuario.

  24.4.4. Archivos de configuracion

   Existen tres ficheros de configuracion del sistema en el directorio /etc
   que probablemente necesitara editar para permitir acceso de dial-up a su
   sistema FreeBSD. El primero, /etc/gettytab, contiene informacion de
   configuracion para el daemon /usr/libexec/getty. El segundo, /etc/ttys
   contiene informacion que le dice a /sbin/init que dispositivos tty deben
   tener procesos getty corriendo. Por ultimo, puede incluir comandos de
   inicializacion de puerto en el script /etc/rc.serial.

   Existen dos escuelas de pensamiento en relacion a modems dial-up en
   UNIX(R). Un grupo gusta de configurar sus modems y sistemas para que sin
   importar a que velocidad un usuario remoto marque, la interfaz local
   RS-232 computadora-a-modem corra a una velocidad fija. El beneficio de
   esta configuracion es que el usuario remoto siempre obtiene un prompt de
   login del sistema inmediatamente. La desventaja es que el sistema no sabe
   cual es la tasa de datos verdadera del usuario, asi que programas a
   pantalla completa como Emacs no ajustaran sus metodos de dibujado de
   pantalla para mejorar sus respuestas en conexiones mas lentas.

   La otra escuela configura sus modems de interfaz RS-232 para variar su
   velocidad basado en la velocidad de conexion del usuario remoto. Por
   ejemplo, conexiones V.32bis (14.4 Kbps) al modem podrian hacer al modem
   correr su interfaz RS-232 a 19.2 Kbps, mientras que conexiones 2400 bps
   hacen correr la interfaz RS-232 del modem a 2400 bps. Debido a que getty
   no entiende el reporte de velocidad de conexion de cualquier modem, getty
   brinda un mensaje login: a una velocidad inicial y observa los caracteres
   que regresan en respuesta. Si el usuario recibe basura, se asume que sabe
   que debe presionar la tecla Enter hasta que reciba un prompt reconocible.
   Si la tasa de datos no concuerda, getty trata todo lo que el usuario
   escriba como "basura", trata yendo a la siguiente velocidad y brinda el
   prompt login: de nuevo. Este procedimiento puede continuar hasta el
   cansancio, pero normalmente solo toma un teclazo o dos antes que el
   usuario reciba un prompt correcto. Obviamente, esta secuencia de login no
   parece tan limpia como el anterior metodo de "velocidad fija", pero un
   usuario en una conexion de velocidad baja podria recibir una respuesta
   interactiva mejor desde programas a pantalla completa.

   Esta seccion tratara de dar informacion de configuracion balanceada, pero
   esta cargada hacia tener la tasa de datos del modem siguiendo la tasa de
   conexion.

    24.4.4.1. /etc/gettytab

   /etc/gettytab es un fichero tipo termcap(5) de informacion de
   configuracion para getty(8). Por favor vea la pagina de manual gettytab(5)
   para informacion completa del formato del fichero y la lista de
   capacidades.

      24.4.4.1.1. Configuracion de velocidad fija

   Si esta fijando la tasa de comunicacion de datos de su modem a una
   velocidad particular, probablemente no necesitara ningun cambio a
   /etc/gettytab.

      24.4.4.1.2. Configuracion de velocidad concordante

   Necesitara crear una entrada en /etc/gettytab para darle informacion a
   getty acerca de las velocidades que desea usar para su modem. Si tiene un
   modem 2400 bps, puede probablemente utilizar la entrada existente D2400.

 #
 # Fast dialup terminals, 2400/1200/300 rotary (can start either way)
 #
 D2400|d2400|Fast-Dial-2400:\
         :nx=D1200:tc=2400-baud:
 3|D1200|Fast-Dial-1200:\
         :nx=D300:tc=1200-baud:
 5|D300|Fast-Dial-300:\
         :nx=D2400:tc=300-baud:

   Si tiene un modem de mayor velocidad, probablemente necesite agregar una
   entrada en /etc/gettytab; aqui esta una entrada que puede utilizar para un
   modem 14.4 Kbps con una velociad de interfaz maxima de 19.2 Kbps:

 #
 # Additions for a V.32bis Modem
 #
 um|V300|High Speed Modem at 300,8-bit:\
         :nx=V19200:tc=std.300:
 un|V1200|High Speed Modem at 1200,8-bit:\
         :nx=V300:tc=std.1200:
 uo|V2400|High Speed Modem at 2400,8-bit:\
         :nx=V1200:tc=std.2400:
 up|V9600|High Speed Modem at 9600,8-bit:\
         :nx=V2400:tc=std.9600:
 uq|V19200|High Speed Modem at 19200,8-bit:\
         :nx=V9600:tc=std.19200:

   esto resultara en una conexion de 8 bits, sin paridad.

   El ejemplo de arriba inicia la tasa de comunicaciones a 19.2 Kbps (para
   conexiones V.32bis), entonces cicla a traves de 9600 bps (para V.32),
   2400 bps, 1200 bps, 300 bps, y de vuelta a 19.2 Kbps. El ciclado de la
   tasa de comunicaciones es implementado con la capacidad nx= ("siguiente
   tabla"). Cada una de las lineas usa una entrada tc= ("continuacion de
   tabla") para recoger el resto de las propiedades "estandar" para una tasa
   de datos en particular.

   Si tiene un modem 28.8 Kbps y/o quiere tomar ventaja de la compresion en
   un modem 14.4 Kbps, necesita utilizar una tasa de comunicaciones mayor a
   19.2 Kbps. Aqui hay un ejemplo de una entrada gettytab iniciando a
   57.6 Kbps:

 #
 # Additions for a V.32bis or V.34 Modem
 # Starting at 57.6 Kbps
 #
 vm|VH300|Very High Speed Modem at 300,8-bit:\
         :nx=VH57600:tc=std.300:
 vn|VH1200|Very High Speed Modem at 1200,8-bit:\
         :nx=VH300:tc=std.1200:
 vo|VH2400|Very High Speed Modem at 2400,8-bit:\
         :nx=VH1200:tc=std.2400:
 vp|VH9600|Very High Speed Modem at 9600,8-bit:\
         :nx=VH2400:tc=std.9600:
 vq|VH57600|Very High Speed Modem at 57600,8-bit:\
         :nx=VH9600:tc=std.57600:

   Si tiene un CPU lento o un sistema muy cargado y no tiene puertos serie
   basados en 16550A, tal vez reciba errores en sio "silo" a 57.6 Kbps.

    24.4.4.2. /etc/ttys

   La configuracion del fichero /etc/ttys fue cubierto en Ejemplo 24.1,
   "Agregando entradas de terminal a /etc/ttys". La configuracion para modems
   es similar pero debemos pasar un argumento diferente a getty y especificar
   un tipo diferente de terminal. El formato general tanto para configuracion
   de velocidad fija y velocidad concordante es:

 ttyd0   "/usr/libexec/getty xxx"   dialup on

   El primer componente de la linea de arriba es el fichero de dispositivo
   especial para esta entrada - ttyd0 significa que /dev/ttyd0 es el fichero
   que getty estara vigilando. El segundo componente "/usr/libexec/getty xxx"
   (xxx sera reemplazado por la capacidad inicial de gettytab) es el proceso
   que init ejecutara en el dispositivo. El tercer componente, dialup, es el
   tipo de terminal por omision. El cuarto parametro, on, le indica a init
   que la linea es operacional. Puede existir un quinto parametro, secure,
   pero solo deberia ser utilizado para terminales que esten fisicamente
   seguras (como la consola del sistema).

   El tipo de terminal por omision (dialup en el ejemplo de arriba) puede
   depender de preferencias locales. dialup es el tipo de terminal
   tradicional por omision en lineas dial-up para que los usuarios puedan
   personalizar sus scripts de login para reconocer cuando la terminal es
   dialup y ajustar sus tipos de terminal automaticamente. De toda maneras,
   el autor encuentra mas sencillo especificar en su sitio vt102 como el tipo
   de terminal por omision, puesto que los usuarios solo utilizan emulacion
   VT102 en sus sistemas remotos.

   Despues de realizar los cambios a /etc/ttys, puede enviar al proceso init
   una senal HUP para que relea el fichero. Puede utilizar el comando

 # kill -HUP 1

   para mandar la senal. Si esta es su primera vez instalando el sistema, tal
   vez quiera esperar hasta que su(s) modem(s) esten configurados y
   conectados correctamente antes de senalizar a init.

      24.4.4.2.1. Configuracion de velocidad fija

   Para una configuracion de velocidad fija, su entrada ttys necesita tener
   una entrada de velocidad fija provista en getty. Para un modem cuya
   velocidad de puerto esta fijada en 19.2 Kbps, la entrada ttys podria verse
   asi:

 ttyd0   "/usr/libexec/getty std.19200"   dialup on

   Si su modem esta fijado a un velocidad de datos diferente, sustituya el
   valor apropiado por std.velocidad en lugar de std.19200. Asegurese de usar
   un tipo valido listado en /etc/gettytab.

      24.4.4.2.2. Configuracion de velocidad concordante

   En una configuracion de velocidad concordante su entrada ttys necesita
   referenciar el inicio de la entrada "auto-baud" (sic) en /etc/gettytab.
   Por ejemplo, si agrego la entrada sugerida arriba para un modem con
   velocidad concordante que inicia a 19.2 Kbps (la entrada gettytab
   conteniendo el punto de inicio V19200), su entrada ttys podria verse como
   esta:

 ttyd0   "/usr/libexec/getty V19200"   dialup on

    24.4.4.3. /etc/rc.serial

   Modems de alta velocidad, como V.32, V.32bis, y V.34, necesitan usar
   control de flujo por hardware (RTS/CTS). Puede agregar comandos stty a
   /etc/rc.serial para activar la bandera de control de flujo por hardware en
   el kernel de FreeBSD para los puertos del modem.

   Por ejemplo para activar la bandera termios crtscts de dispositivos de
   inicializacion dial-in y dial-out en el puerto serie #1 (COM2), las
   siguientes lineas pueden agregarse a /etc/rc.serial:

 # Serial port initial configuration
 stty -f /dev/ttyid1 crtscts
 stty -f /dev/cuaia1 crtscts

  24.4.5. Propiedades del modem

   Si tiene un modem cuyos parametros pueden ser activados permanentemente en
   RAM no volatil, necesitara utilizar un programa de terminal (como Telix en
   MS-DOS(R) o tip en FreeBSD) para activar los parametros. Conecte al modem
   usando la misma velocidad de comunicacion como velocidad inicial que getty
   usara y configure la RAM no volatil del modem para que concuerde con estos
   requerimientos:

     * CD activado cuando este conectado

     * DTR activado para operacion; tirar DTR cuelga la linea y reinicia el
       modem

     * CTS control de flujo de datos transmitidos

     * Deshabilitar control de flujo XON/XOFF

     * RTS control de flujo de datos recibidos

     * Modo silencioso (sin codigos resultantes)

     * Sin eco de comandos

   Por favor lea la documentacion de su modem para saber que comandos y/o
   switches DIP necesita proporcionarle.

   Pro ejemplo, para activar los parametros de arriba en un modem U.S.
   Robotics(R) Sportster(R) 14,400 externo, uno podria dar estos comandos al
   modem:

 ATZ
 AT&C1&D2&H1&I0&R2&W

   Tal vez quiera tambien tomar esta oportunidad para ajustar otras
   propiedades en el modem, como si utilizara compresion V.42bis y/o MNP5.

   El modem U.S. Robotics(R) Sportster(R) 14,400 externo tambien posee
   switches DIP que necesitan activarse; para otros modems, tal vez pueda
   utilizar estas propiedades como un ejemplo:

     * Switch 1: ARRIBA - DTR Normal

     * Switch 2: N/A (Codigos resultantes verbales/Codigos resultantes
       numericos)

     * Switch 3: ARRIBA - Suprimir codigos resultantes

     * Switch 4: ABAJO - No eco, comandos offline

     * Switch 5: ARRIBA - Auto respuesta

     * Switch 6: ARRIBA - Deteccion de senal Normal

     * Switch 7: ARRIBA - Cargar valores NVRAM por omision

     * Switch 8: N/A (Modo inteligente/Modo tonto)

   Codigos resultantes deberian ser deshabilitados o suprimidos para modems
   dial-up para evitar problemas que pueden ocurrir si getty erroneamente
   ofrece un prompt login: a un modem que se encuentra en modo de comandos y
   el modem hace eco del comando o regresa un codigo resultante. Esta
   secuencia puede resultar en una conversacion larga y tonta entre getty y
   el modem.

    24.4.5.1. Configuracion de velocidad fija

   Para una configuracion de velocidad fija necesitara configurar el modem
   para mantener una tasa de datos constante modem-a-computadora
   independiente de la tasa de comunicaciones. En un modem U.S. Robotics(R)
   Sportster(R) 14,400 externo estos comandos fijaran la tasa de datos
   modem-a-computadora a la velocidad utilizada para pasar los comandos:

 ATZ
 AT&B1&W

    24.4.5.2. Configuracion de velocidad concordante

   Para una configuracion de velocidad variable necesitara configurar su
   modem para ajustar la tasa de datos de su puerto serie para que coincida
   con la tasa de llamada entrante. En un modem U.S. Robotics(R) Sportster(R)
   14,400 externo estos comandos fijaran la tasa de correccion de errores de
   datos a la velocidad usada para pasar los comandos, pero le permite a la
   tasa del puerto serie variar para conexiones que no corrigen errores:

 ATZ
 AT&B2&W

    24.4.5.3. Revisando la configuracion del modem

   La mayoria de los modems de alta velocidad brindan comandos para ver los
   parametros actuales de operacion del modem en un modo entendible para
   humanos. En el modem U.S. Robotics(R) Sportster(R) 14,400 externo, el
   comando ATI5 despliega los parametros que estan almacenados en la RAM no
   volatil. Para ver los parametros reales de operacion del modem
   (influenciado por los parametros de los switches DIP del modem), utilice
   el comando ATZ y entonces ATI4.

   Si tiene una marca diferente de modem, revise el manual de su modem para
   ver como checar doblemente los parametros de configuracion de su modem.

  24.4.6. Determinando errores

   Aqui hay unos cuantos pasos que puede seguir para revisar en sus sistema
   el modem dial-up.

    24.4.6.1. Revisando el sistema FreeBSD

   Conecte su modem a su sistema FreeBSD, arranque el sistema, y, si su modem
   tiene luces de indicacion de estado, mire si el indicador DTR del modem
   enciende cuando el prompt login: aparece en la consola del sistema - si
   enciende, eso deberia significar que FreeBSD ha iniciado un proceso getty
   en el puerto de comunicaciones apropiado y esta esperando a que el modem
   acepte la llamada.

   Si el indicador DTR no enciende, entre al sistema FreeBSD a travas de la
   consola y ponga un ps ax para ver si FreeBSD esta tratando de correr un
   proceso getty en el puerto correcto. Deberia ver lineas como estas entre
   los procesos desplegados:

   114 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd0
   115 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd1

   Si ve algo diferente, como esto:

   114 d0  I      0:00.10 /usr/libexec/getty V19200 ttyd0

   y el modem no ha aceptado una llamada todavia, esto significa que getty ha
   completado su apertura en el puerto de comunicaciones. Esto puede indicar
   un problema con el cableado o un modem mal configurado, debido a que getty
   no podria abrir el puerto de comunicaciones hasta que un CD (deteccion de
   senal) sea afirmado por el modem.

   si no ve ningun proceso getty esperando para abrir el puerto ttydN
   deseado, revise de nuevo sus entradas en /etc/ttys para ver si existe
   algun error ahi. Tambien revise el fichero de log /var/log/messages para
   ver si existe algun mensaje de init o de getty relacionados a cualquier
   problema. Si existe cualquier mensaje, revise nuevamente los ficheros de
   configuracion /etc/ttys y /etc/gettytab, asi como los ficheros especiales
   de dispositivo /dev/ttydN, por cualquier error, entradas faltantes, o
   ficheros especiales de dispositivo faltantes.

    24.4.6.2. Trate de llamar

   Trate de llamar al sistema; asegurese de usar 8 bits, sin paridad, y 1 bit
   de parada en el sistema remoto. Si no obtiene un prompt inmediatamente, o
   recibe basura, trate presionando Enter una vez por segundo. Si continua
   sin ver un prompt de login: despues de un tiempo, trate enviando un BREAK.
   Si esta usando un modem de alta velocidad para realizar la marcacion,
   trate marcando de nuevo despues de fijar la velociad de interfaz del modem
   (por medio de AT&B1 en un modem U.S. Robotics(R) Sportster(R), por
   ejemplo).

   Si todavia no puede obtener un prompt de login:, revise /etc/gettytab de
   nuevo y revise nuevamente que

     * El nombre de capacidad inicial especificado en /etc/ttys para la linea
       coincida con un nombre de una capacidad en /etc/gettytab

     * Cada entrada nx= coincida con otro nombre de capacidad de gettytab

     * Cada entrada tc= coincida con otro nombre de capacidad de gettytab

   Si marca pero el modem en el sistema FreeBSD no contesta, asegurese que el
   modem esta configurado para contestar el telefono cuando DTR sea
   detectado. Si el modem parece estar configurado correctamente, verifique
   que DTR sea detectado revisando las luces indicadoras del modem (si tiene
   alguna).

   Si ha revisado todo varias veces y todavia no funciona, tome un descanso y
   regrese a eso depues. Si todavia continua sin funcionar, tal vez puede
   mandar un correo electronico a lista de correo para preguntas generales
   sobre FreeBSD describiendo su modem y su problema, y las buenas personas
   en la lista trataran de ayudarle.

24.5. Servicio dial-out

   Los siguientes son tips para que su equipo pueda conectarse a otra
   computadora mediante el modem. Esto es apropiado para establecer una
   sesion de terminal con un equipo remoto.

   Esto es util para entrar a una BBS.

   Este tipo de conexion puede ser extremadamente util para obtener un
   fichero del Internet si tiene problemas con PPP. Si necesita mandar por
   FTP algo y PPP no funciona, utilice la sesion de terminal para mandarlo
   por FTP. Entonces use zmodem para transferirlo a su maquina.

  24.5.1. ?Mi modem Hayes no esta soportado, que puedo hacer?

   En realidad, la pagina de manual para tip no esta actualizada. Existe un
   marcador Hayes generico incluido. Solo utilice at=hayes en su fichero
   /etc/remote.

   El controlador Hayes no es lo suficientemente inteligente para reconocer
   algunas de las funciones avanzadas de nuevos modems como BUSY, NO
   DIALTONE, o CONNECT 115200 y solamente se confundira. Deberia apagar esos
   mensajes cuando utilice tip (usando ATX0&W).

   Tambien, la pausa de marcado para tip es de 60 segundos. Su modem debe
   utilizar un poco menos, o de otra manera tip pensara que existe un
   problema de comunicacion. Trate con ATS7=45&W.

  Nota:

   Asi como se envia, tip todavia no soporta modems Hayes completamente. La
   solucion es editar el fichero tipconf.h en el directorio
   /usr/src/usr.bin/tip/tip. Obviamente necesita las fuentes de la
   distribucion para hacer esto.

   Edite la linea #define HAYES 0 a #define HAYES 1. Entonces haga un make y
   make install. Todo funciona bien despues de eso.

  24.5.2. ?Como se espera que yo entre estos comandos AT?

   Haga lo que se llama una entrada "directa" en su fichero /etc/remote. Por
   ejemplo, si su modem esta conectado al primer puerto serie, /dev/cuaa0,
   entonces ponga la siguiente linea:

 cuaa0:dv=/dev/cuaa0:br#19200:pa=none

   Utilice la tasa mas alta de bps que su modem soporte en la capacidad br.
   Entonces, escriba tip cuaa0 y estara conectado a su modem.

   Si no existe un fichero /dev/cuaa0 en su sistema, haga esto:

 # cd /dev
 # sh MAKEDEV cuaa0

   O use cu como root con el siguiente comando:

 # cu -lline -sspeed

   line es el puerto serie (ejem./dev/cuaa0) y speed es la velocidad
   (ejem.57600). Cuando termine de meter los comandos AT presione ~. para
   salir.

  24.5.3. !El signo @ para la capacidad pn no funciona!

   El signo @ en la capacidad numero de telefono le dice a tip que busque en
   /etc/phones por un numero de telefono. Pero el signo @ tambien es un
   caracter especial en ficheros de capacidad como /etc/remote. Escapelo con
   una diagonal invertida:

 pn=\@

  24.5.4. Como puede marcar un numero de telefono. en la linea de comando?

   Ponga lo que se llama una entrada "generica" en su fichero /etc/remote.
   Por ejemplo:

 tip115200|Dial any phone number at 115200 bps:\
         :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
 tip57600|Dial any phone number at 57600 bps:\
         :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:

   Entonces puede hacer cosas como:

 # tip -115200 5551234

   Si prefiere cu y no tip, use una entrada cu:

 cu115200|Use cu to dial any number at 115200bps:\
         :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:

   y escriba:

 # cu 5551234 -s 115200

  24.5.5. ?Tengo que teclear la tasa de bps cada vez que haga eso?

   Ponga una entrada para tip1200 o cu1200, pero utilice cualquier tasa bps
   que sea apropiada con la capacidad br. tip piensa que una buena opcion por
   omision es 1200 bps es por eso que busca una entrada tip1200. Aunque no
   tiene que usar 1200 bps.

  24.5.6. Acceso a un numero de equipos a traves de un servidor de terminales

   en lugar de esperar hasta que este conectado y teclear CONNECT <host> cada
   vez, use la capacidad de tip cm. Por ejemplo, estas entradas en
   /etc/remote:

 pain|pain.deep13.com|Forrester's machine:\
         :cm=CONNECT pain\n:tc=deep13:
 muffin|muffin.deep13.com|Frank's machine:\
         :cm=CONNECT muffin\n:tc=deep13:
 deep13:Gizmonics Institute terminal server:\
         :dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:

   Le permitira teclear tip pain o tip muffin para conectar a los equipos
   pain o muffin, y tip deep13 para accesar al servidor de terminales.

  24.5.7. ?Puede Tip tratar mas de una linea para cada sitio?

   Eso es a menudo un problema donde una universidad tiene varias lineas de
   modems y varios miles de estudiantes tratando de usarlas.

   Haga una entrada para su universidad en /etc/remote y use @ para la
   capacidad pn :

 big-university:\
         :pn=\@:tc=dialout
 dialout:\
         :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:

   Entonces liste los numeros de telefonos para la universidad en
   /etc/phones:

 big-university 5551111
 big-university 5551112
 big-university 5551113
 big-university 5551114

   tip tratara cada uno en el orden listado, entonces se rendira. Si quiere
   seguir tratando, ejecute tip en un ciclo while.

  24.5.8. ?Porque tengo que presionar Ctrl+P dos veces para mandar un Ctrl+P ?

   Ctrl+P es el caracter de "forzado" por omision, usado para decirle a tip
   que el siguiente caracter es un dato literal. Puede establecer el caracter
   de forzado a cualquier otro caracter con el escape ~s, el cual significa
   "establecer una variable."

   Escriba ~sforce=single-char seguido por una nueva linea. single-char es
   cualquier caracter. Si no especifica single-char, entonces el caracter de
   forzado es el caracter nulo, el cual puede obtener tecleando Ctrl+2 o
   Ctrl+Espacio. Un buen valor para single-char es Shift+Ctrl+6, es cual
   solamente es usado en algunos servidores de terminales.

   Puede hacer que el caracter de forzado sea cualquiera que usted quiera
   especificando lo siguiente en su fichero $HOME/.tiprc:

 force=<single-char>

  24.5.9. ??De repente todo lo que escribo esta en mayusculas??

   Debe haber presionado Ctrl+A, el"caracter de mayusculas" de tip
   especialmente disenado para personas con teclas caps-lock danadas. Use ~s
   como se ve arriba y establezca la variable raisechar a algo razonable. De
   hecho, puede establecerla a la misma del caracter de forzado, si nunca
   espera utilizar ninguna de estas funciones.

   Aqui hay un ejemplo de fichero .tiprc perfecto para usuarios de Emacs que
   necesitan teclear Ctrl+2 y Ctrl+A con frecuencia:

 force=^^
 raisechar=^^

   El ^^ es Shift+Ctrl+6.

  24.5.10. ?Como puedo realizar transferencias de ficheros con tip?

   Si esta hablando con otro sistema UNIX(R), puede mandar y recibir ficheros
   con ~p (put) y ~t (take). Estos comandos ejecutan cat y echo en el sistema
   remoto para aceptar y enviar ficheros. La sintaxis es:

   ~p fichero-local [fichero-remoto]

   ~t fichero-remoto [fichero-local]

   No existe revision de errores, asi que probablemente deberia usar otro
   protocolo, como zmodem.

  24.5.11. ?Como puedo ejecutar zmodem con tip?

   Para recibir ficheros, inicie el programa de envio en el extremo remoto.
   Entonces escriba ~C rz para empezar a recibirlos localmente.

   Para enviar ficheros, inicie el programa de recepcion el extremo remoto.
   Entonces escriba ~C sz files para enviarlos al sistema remoto.

24.6. Configurando la consola serie

   Contribuido por Kazutaka YOKOTA.
   Basado en un documento de Bill Paul.

  24.6.1. Introduccion

   FreeBSD tiene la habilidad de arrancar en un sistema con solo una terminal
   tonta como consola. Tal configuracion podria ser util para dos clases de
   gente: administradores de sistema que quieran instalar FreeBSD en maquinas
   que no tienen teclado o monitor conectado, y desarrolladores que quieran
   corregir errores en el kernel o controladores de dispositivos.

   Como se describe en Capitulo 12, El proceso de arranque en FreeBSD,
   FreeBSD emplea un sistema de arranque de tres estados. Los primeros dos
   estados se encuentran en el codigo del bloque de arranque el cual es
   almacenado al principio del slice en el disco de arranque. El bloque de
   arranque entonces cargara y ejecutara el cargador de arranque
   (/boot/loader) como la tercera etapa de codigo.

   Para poder configurar la consola serie debe configurar el codigo del
   bloque de arranque, el codigo del cargador de arranque y el kernel.

  24.6.2. Configuraciom de consola serie, version breve

   Esta seccion asume que esta usando la configuracion por omision y solo
   quiere una rapida revision de la configuracion de la consola serie.

    1. Conecte el cable serie a COM1 y la terminal controladora.

    2. Para ver todos los mensajes de arranque en la consola serie escriba el
       siguiente comando mientras esta firmado como superusuario:

 # echo 'console="comconsole"' >> /boot/loader.conf

    3. Edite /etc/ttys y cambie dialup a vt100 para la entrada ttyd0. De otra
       manera una contrasena no sera requerida para conectar por medio de la
       consola serie, resultando en un agujero de seguridad potencial.

    4. Reinicie el sistema para ver si los cambios tuvieron efecto.

   Si una configuracion diferente es requerida, una explicacion mas detallada
   existe en Seccion 24.6.3, "Configuracion de la consola serie".

  24.6.3. Configuracion de la consola serie

    1. Prepare un cable serie.

       Necesitara ya sea un cable null-modem o un cable serie estandar y un
       adaptador null-modem. Vea Seccion 24.2.2, "Cables y puertos" para una
       discusion sobre cables serie.

    2. Desconecte su teclado.

       La mayoria de sistemas PC buscan el teclado durante la autoprueba de
       encendido (POST) y generaran un error si el teclado no es detectado.
       Algunas maquinas se quejan fuerte sobre la falta de un teclado y no
       continuaran arrancando hasta que este contectado.

       Si su computadora se queja con este error, pero arranca de todos
       modos, entonces no tiene que hacer nada especial. (Algunas maquinas
       con BIOS Phoenix instalado solo mostraran Keyboard failed y
       continuaran arrancando normalmente.)

       Si su computadora se niega a arrancar sin un teclado conectado,
       entonces tendra que configurar el BIOS para que ignore este error (si
       es posible). Consulte el manual de su tarjeta madre para los detalles
       de como hacer esto.

  Sugerencia:

       Poniendo el teclado como "No instalado" en el BIOS no significa que no
       poda usar su teclado. Todo lo que hace es decirle al BIOS que no
       busque un teclado al momento de encender, asi no se quejara si el
       teclado no se encuentra conectado. Puede dejar el teclado conectado
       incluso si esta bandera esta puesta a "No instalado" y el teclado
       todaia funcionara.

  Nota:

       Si su sistema tiene un raton PS/2(R) es muy probable que tambien tenga
       que desconectar su raton junto con el teclado. Esto se debe a que los
       ratones PS/2(R) comparten algun hardware con el teclado y dejandolo
       conectado puede ocasionar que el sistema piense que el teclado sigue
       conectado. Se dice que un sistema Gateway 2000 Pentium 90 MHz con un
       AMI BIOS se comporta de esta manera. En general, esto no representa un
       problema puesto que el raton no es muy util sin el teclado de todas
       maneras.

    3. Conecte una terminal tonta a COM1 (sio0).

       Si no tiene una terminal tonta, puede utilizar una PC/XT vieja con un
       programa de modem, o el puerto serie en otro equipo UNIX(R). Si no
       tiene un COM1 (sio0), consiga uno. En este momento, no existe manera
       de seleccionar un puerto diferente a COM1 para los bloques de arranque
       sin recompilar los bloques de arranque. Si ya esta utilizando COM1
       para otro dispositivo, necesitara remover temporalmente ese
       dispositivo e instalar un nuevo bloque de arranque y kernel una vez
       que tenga a FreeBSD arriba y funcionando. (Se asume que COM1 estara
       disponible en un fichero/computadora/servidor de terminales de todas
       maneras; si realmente necesita COM1 para algo mas (y no puede cambiar
       ese algo a COM2 (sio1)), entonces probablemente no deberia de
       molestarse con todo esto en primer lugar.)

    4. Asegurese de que el fichero de configuracion de su kernel tenga las
       banderas apropiadas activadas para COM1 (sio0).

       Las banderas relevantes son:

            0x10

                    Habilita el soporte de consola para esta unidad. Las
                    otras banderas de consola son ignoradas a menos que esta
                    esta activada. Actualmente, al menos una unidad puede
                    tener soporte de consola; la primera (en orden de
                    configuracion) con esta bandera activada es preferida.
                    Esta opcion por si sola no hara del puerto serie una
                    consola. Active la siguiente bandera o utilice la opcion
                    -h descrita abajo, junto con esta bandera.

            0x20

                    Obliga a esta unidad a ser la consola (a menos que exista
                    otra consola de mayor prioridad), sin importar la opcion
                    -h discutida abajo. Esta bandera reemplaza la opcion
                    COMCONSOLE en las versiones 2.X de FreeBSD. La bandera
                    0x20 debe ser utilizada junto con la bandera 0x10.

            0x40

                    Reserva esta unidad (en conjunto con 0x10) y hace esta
                    unidad no disponible para acceso normal. No deberia
                    activar esta bandera en la unidad de puerto serie la cual
                    desee utilizar como la consola serie. El unico uso de
                    esta bandera es designar la unidad para coreccion de
                    errore remota del kernel. Revise "El manual del
                    desarrollador" para mayor informacion sobre correccion de
                    errores remotamente.

  Nota:

                    En FreeBSD 4.0 o posterior la semantica de la bandera
                    0x40 es ligeramente diferente y existe otra bandera para
                    especificar un puerto serie para correccion de errores
                    remotamente.

       Ejemplo:

 device sio0 at isa? port IO_COM1 flags 0x10 irq 4

       Vea la pagina de manual sio(4) para mas detalles.

       Si las banderas no fueron activadas, necesita correr UserConfig (en
       una consola diferente) o recompilar el kernel.

    5. Cree boot.config en el directorio raiz de la particion a del disco de
       arranque.

       Este fichero instruira al codigo del bloque de arranque como le
       gustaria arrancar el sistema. Para activar la consola serie, necesita
       una o mas de las siguientes opciones- si quiere opciones multiples
       incluyalas todas en la misma linea:

            -h

                    Cambia entre consola interna y serie. Puede usar esto
                    para cambiar los dispositivos de consola. Por ejemplo, si
                    arranca desde la consola interna (video), puede utilizar
                    -h para dirigir el cargador de arranque y el kernel a que
                    usen el puerto serie como su dispositivo de consola.
                    Alternativamente, si arranca desde el puerto serie, puede
                    utilizar -h para decirle al cargador de arranque y al
                    kernel que usen el video como consola.

            -D

                    Cambia entre configuracion de consola simple y dual. En
                    la configuracion simple la consola sera ya sea la consola
                    interna (video) o el puerto serie, dependiendo del estado
                    de la opcion -h de arriba. En la configuracion de consola
                    dual, el video y el puerto serie se convertiran en la
                    consola al mismo tiempo, sin importar del estado de la
                    opcion -h. De todas maneras, note que la configuracion de
                    consola dual toma efecto solamente mientras el bloque de
                    arranca esta corriendo. Una vez que el cargador de
                    arranque toma el control, la consola especificada por la
                    opcion -h se convierte en la unica consola.

            -P

                    Hace que el bloque de arranque busque el teclado. Si no
                    se encuentra un teclado, la opcion -D y -h son activadas
                    automativamente.

  Nota:

                    Debido a problemas de espacio en la version actual del
                    bloque de arranque, la opcion -P es capaz de detectar
                    unicamente teclados extendidos. Teclados con menos de 101
                    teclas (y carentes de teclas F11 y F12) no pueden ser
                    detectados. Algunos teclados en laptops puede que no sean
                    correctamente encontrados debido a esta limitacion. Si
                    este es el caso con su sistema, debe abandonar el uso de
                    la opcion -P. Desafortunadamente no hay una solucion para
                    este problema.

       Utilice ya sea la opcion -P para seleccionar la consola
       automaticamente, o la opcion -h para activar la consola serie.

       Puede incluir otras opciones descritas en boot(8) tambien.

       Las opciones, excepto por -P, seran pasadas al cargador de arranque
       (/boot/loader). El cargador de arranque determinara si el video
       interno o el puerto serie deberia convertirse en la consola examinando
       el estado de la opcion -h solamente. Esto significa que si especifica
       la opcion -D pero no la opcion -h en /boot.config, puede utilizar el
       puerto serie como consola solamente durante el bloque de arranque; el
       cargador de arranque usara el video interno como consola.

    6. Arranque la maquina.

       Cuando inicia su equipo FreeBSD, los bloques de arranque mostraran los
       contenidos de /boot.config a la consola. Por ejemplo:

 /boot.config: -P
 Keyboard: no

       La segunda linea aparece solamente si pone -P en /boot.config e indica
       la presencia/ausencia del teclado. Estos mensajes van a la consola
       serie o a la interna, o a ambas, dependiendo de la opcion en
       /boot.config.

                   Opciones                          Mensaje va a             
       ninguna                           consola interna                      
       -h                                consola serie                        
       -D                                consola serie e interna              
       -Dh                               consola serie e interna              
       -P, teclado presente              consola interna                      
       -P, teclado ausente               consola serie                        

       Despues de los mensajes de arriba, existira una pausa pequena antes
       que los bloques de arranque continuen cargando el cargador de arranque
       y antes de que cualquier mensaje posterior sea impreso en la consola.
       Bajo ciertas circunstancias, no necesita interrumpir los bloques de
       arranque, pero tal vez quiera hacerlo para asegurarse que las cosas
       estan configuradas correctamente.

       Presione cualquier tecla, diferente a Enter, en la consola para
       interrumpir el proceso de arranque. Los bloques de arranque entonces
       esperaran una entrada para determinar como continuar. Debe ver algo
       como esto:

 >> FreeBSD/i386 BOOT
 Default: 0:ad(0,a)/boot/loader
 boot:

       Verifique que el mensaje de arriba aparece en la consola serie o en la
       interna o en ambas, de acuerdo a las opciones que puso en
       /boot.config. Si el mensaje aparece en la consola correcta, presione
       Enter para continuar el proceso de arranque.

       Si quiere usar la consola serie pero no ve el prompt en la terminal
       serie, algo esta mal con su configuracion. Mientras tanto, entre -h y
       presione Enter/Return (si es posible) para decirle al bloque de
       arranque (y entonces al cargador de arranque y al kernel) que elija el
       puerto serie como consola. Una vez que el sistema arranque, regrese y
       revise que fue lo que estuvo mal.

   Despues que el cargador de arranque ha cargado y usted se encuentra en la
   tercera etapa del proceso de arranque todavia puede cambiar entre la
   consola interna y la consola serie activando las variables de entorno
   apropiadas en el cargador de arranque. Vea Seccion 24.6.6, "Cambiando la
   consola desde el cargador de arranque".

  24.6.4. Resumen

   aqui esta el resumen de varias configuraciones discutidas en esta seccion
   y la consola seleccionada eventualmente.

    24.6.4.1. Caso 1: Activo las banderas a 0x10 para sio0

 device sio0 at isa? port IO_COM1 flags 0x10 irq 4

       Opciones en      Consola durante  Consola durante cargador  Consola en 
       /boot.config       bloques de           de arranque           kernel   
                           arranque     
   ninguna              interna         interna                    interna    
   -h                   serie           serie                      serie      
   -D                   serie e interna interna                    interna    
   -Dh                  serie e interna serie                      serie      
   -P, teclado presente interna         interna                    interna    
   -P, teclado ausente  serie e interna serie                      serie      

    24.6.4.2. Caso 2: Activo las banderas a 0x30 para sio0

 device sio0 at isa? port IO_COM1 flags 0x30 irq 4

       Opciones en      Consola durante  Consola durante cargador  Consola en 
       /boot.config       bloques de           de arranque           kernel   
                           arranque     
   ninguna              interna         interna                    serie      
   -h                   serie           serie                      serie      
   -D                   serie e interna interna                    serie      
   -Dh                  serie e interna serie                      serie      
   -P, teclado presente interna         interna                    serie      
   -P, teclado ausente  serie e interna serie                      serie      

  24.6.5. Consejos para la consola serie

    24.6.5.1. Configurando un velocidad de puerto serie mas rapida

   Por omision, la configuracion del puerto serie es: 9600 baud, 8 bits, sin
   paridad, y 1 bit de parada. Si desea cambiar la velocidad, necesita
   recompilar al menos los bloques de arranque. Agregue la siguiente linea a
   /etc/make.conf y compile nuevos bloques de arranque:

 BOOT_COMCONSOLE_SPEED=19200

   Vea Seccion 24.6.5.2, "Usando puertos serie para consola diferentes a
   sio0" para instrucciones detalladas sonre construir e instalar nuevos
   bloques de arranque.

   Si la consola serie esta configurada de alguna otra manera que arrancando
   con -h, o si la consola serie usada por el kernel es diferente de la usada
   por los bloques de arranque, entonces tambien debe agregar la siguiente
   opcion al fichero de configuracion del kernel y compilar un nuevo kernel:

 options CONSPEED=19200

    24.6.5.2. Usando puertos serie para consola diferentes a sio0

   Utilizar un puerto serie diferente a sio0 como consola requiere cierta
   recompilacion. Si quiere usar otro puerto serie por la razon que sea,
   recompile los bloques de arranque, el cargador de arranque y el kernel
   como sigue.

    1. Consiga las fuentes del kernel. (Vea Capitulo 23, Lo ultimo de lo
       ultimo)

    2. Edite /etc/make.conf y ponga BOOT_COMCONSOLE_PORT a la direccion del
       puerto que quiera usar (0x3F8, 0x2F8, 0x3E8 o 0x2E8). Solamente de
       sio0 hasta sio3 (COM1 hasta COM4) pueden usarse; tarjetas multipuertos
       serie no funcionaran. No se necesita especificar interrupcion.

    3. Cree un fichero personalizado de configuracion de kernel y agrege las
       banderas apropiadas para el puerto serie que desee utilizar. Por
       ejemplo, si desea hacer de sio1 (COM2) la consola:

 device sio1 at isa? port IO_COM2 flags 0x10 irq 3

       o

 device sio1 at isa? port IO_COM2 flags 0x30 irq 3

       Las banderas de consola para otros puertos serie no deben activarse.

    4. Recompile e instale los bloques de arranque y el cargador de arranque:

 # cd /sys/boot
 # make clean
 # make
 # make install

    5. Reconstruya e instale el kernel.

    6. Escriba los bloques de arranque al disco de arranque con disklabel(8)
       y arranque desde el nuevo kernel.

    24.6.5.3. Accesando DDB Debugger desde la linea serie

   Si desea entrar al modo kernel debugger desde una consola serie (util para
   diagnosticos remotos, !pero tambien peligroso si genera un BREAK ilegitimo
   en el puerto serie!) entonces debe compilar con las siguientes opciones:

 options BREAK_TO_DEBUGGER
 options DDB

    24.6.5.4. Obteniendo un prompt de login en la consola serie

   Aunque esto no es requerido, tal vez quiera obtener un prompt de login a
   traves de una linea serie, ahora que puede ver los mensajes de arranque y
   puede entrar a una sesion en modo kernel debug a traves de la consola
   serie. Aqui esta como hacerlo.

   Abra el fichero /etc/ttys con un editor y localice las lineas:

 ttyd0 "/usr/libexec/getty std.9600" unknown off secure
 ttyd1 "/usr/libexec/getty std.9600" unknown off secure
 ttyd2 "/usr/libexec/getty std.9600" unknown off secure
 ttyd3 "/usr/libexec/getty std.9600" unknown off secure

   ttyd0 hasta ttyd3 corresponde a COM1 hasta COM4. Cambie off a on para el
   puerto deseado. Si ha cambiado la velocidad del puerto serie, necesita
   cambiar std.9600 para que concuerde con los parametros actuales, ej.
   std.19200.

   Tal vez tambien desee cambiar el tipo de terminal de unknown al tipo
   actual de su terminal serie.

   Despues de editar el fichero, debe hacer un kill -HUP 1 para que este
   cambio surta efecto.

  24.6.6. Cambiando la consola desde el cargador de arranque

   Secciones anteriores describieron como instalar la consola serie
   manipulando el bloque de arranque. Esta seccion muestra que puede
   especificar la consola especificando algunos comandos y variables de
   entorno en el cargador de arranque. Como el cargador de arranque es
   invocado en la tercera etapa del proceso de arranque, despues del bloque
   de arranque, las propiedades en el cargador de arranque sobreescribiran
   las del bloque de arranque.

    24.6.6.1. Instalando la consola serie

   Puede facilmente especificarle al cargador de arranque y al kernel que
   utilicen la consola serie escribiendo solamente una linea en
   /boot/loader.rc:

 set console="comconsole"

   Esto tendra efecto sin importar las opciones del bloque de arranque
   discutidas en la seccion previa.

   Es mejor que ponga la linea de arriba como la primera linea en
   /boot/loader.rc para ver los mensajes de arranque en la consola serie tan
   pronto como sea posible.

   De igual manera, puede especificar la consola interna como:

 set console="vidconsole"

   Si no activa la variable de entorno console, el cargador de arranque, y
   por consecuencia el kernel, utilizaran cualquier consola que este indicada
   por la opcion -h en el bloque de arranque.

   En versiones 3.2 o posteriores, puede especificar la consola en
   /boot/loader.conf.local o /boot/loader.conf, en lugar de /boot/loader.rc.
   En este metodo su /boot/loader.rc debe verse como:

 include /boot/loader.4th
 start

   Entonces, puede crear /boot/loader.conf.local y ponerle la siguiente
   linea.

 console=comconsole

   o

 console=vidconsole

   Vea loader.conf(5) para mayor informacion.

  Nota:

   Hasta el momento, el cargador de arranque no tiene una opcion equivalente
   a la opcion -P del bloque de arranque, y no existe una manera de
   seleccionar automaticamente la consola interna y la consola serie
   basandose en la presencia del teclado.

    24.6.6.2. Utilizando un puerto serie para la consola diferente a sio0

   Necesita recompilar el cargador de arranque para usar un puerto serie
   diferente a sio0 para la consola serie. Siga el procedimiento descrito en
   Seccion 24.6.5.2, "Usando puertos serie para consola diferentes a sio0".

  24.6.7. Advertencias

   La idea aqui es permitir a las personas configurar servidores dedicados
   que no requieran hardware de graficos o teclados conectados.
   Desafortunadamente, mientras la mayoria de los sistemas le permitiran
   arrancar sin un teclado, existen bastantes que no le permitiran arrancar
   sin un adaptador de graficos. Maquinas con BIOS AMI pueden configurarse
   para arrancar sin adaptadores de graficos instalados cambiando simplemente
   la opcion "graphics adapter" en la configuracion del CMOS a "Not
   installed."

   De cualquier manera, muchas maquinas no soportan esta opcion y se negaran
   a arrancar si no tiene algun hardware de graficos instalado en el sistema.
   Con estas maquinas, debe dejar algun tipo de tarjeta grafica instalada,
   (incluso si solamente es una tarjeta mono barata) aunque no tendra que
   conectarle un monitor. Tambien puede tratar instalando un BIOS AMI.

Capitulo 25. PPP y SLIP

   Reestructurado, reorganizado, y actualizado por Jim Mock.
   Tabla de contenidos

   25.1. Sinopsis

   25.2. Uso de User PPP

   25.3. Uso de Kernel PPP

   25.4. Uso de PPP sobre Ethernet (PPPoE)

   25.5. Uso de PPP sobre ATM (PPPoA)

   25.6. Uso de SLIP

25.1. Sinopsis

   FreeBSD cuenta con un gran numero de formas para conectar una computadora
   a otra. Para establecer una red o una coneccion a Internet por medio de un
   modem, o bien, permitir a otras computadoras conectarse por medio de este,
   se requiere del uso de PPP o SLIP. Este capitulo describe en detalle como
   configurar los servicios de comunicacion para llevar esto a cabo.

   Una vez que haya leido este capitulo, usted sabra:

     * Como configurar User PPP.

     * Como configurar Kernel PPP.

     * Como configurar PPPoE (PPP over Ethernet*).

     * Como configurar PPPoA (PPP over ATM*).

     * Como instalar y configurar un cliente y servidor SLIP.

   N. de T.: En estricto sentido esto se refiere a contar con la conexion por
   medio de un dispositivo Ethernet, o bien ATM, pero debido a que usted
   encontrara estos metodos en su sistema, como PPPoE o bien PPPoA, se han
   dejado los conceptos "literales" del documento original. Espero que no sea
   un problema.

   Antes de leer este capitulo, usted debiese:

     * Estar familiarizado con la terminologia basica de redes.

     * Comprender lo basico y el proposito de una coneccion por modem SLIP
       y/o PPP.

   Puede ser que usted se pregunte cual es la principal diferencia entre User
   PPP y kernel PPP. La respuesta es sencilla; el metodo User PPP procesa la
   entrada y salida de datos en userland (ver nota siguiente) en lugar de
   hacerlo en el kernel. Esto es algo desgastante, en terminos del manejo de
   datos entre userland y el kernel, pero permite, por mucho, un mejor
   desempeno e implementacion de PPP. User PPP utiliza el dispositivo tun
   para comunicarse con el mundo exterior, mientras que kernel-ppp, utiliza
   el dispositivo ppp.

   En el desarrollo de este capitulo, se hara referencia a User PPP,
   simplemente como ppp, a menos de que sea necesaria hacer una distincion
   entre este y otro software de PPP, como es el caso de pppd. Asi mismo, si
   en el desarrollo del capitulo no se senala lo contrario, todos los
   comandos explicados, deberan ser ejecutados como root.

   N. de T. : Cuando se habla de "userland" se hace referencia a todo aquello
   que *no* forma parte del kernel y que en el caso de codigo de programa, se
   ejecuta en modo usuario, ya que el codigo del kernel se ejecuta en modo
   kernel, supervisor, o bien en modo privilegiado de ejecucion. En lo
   sucesivo este termino sera utilizado tal cual.

25.2. Uso de User PPP

   Originalmente contribuido por Brian Somers.
   Con apoyo de Nik Clayton, Dirk Fro:mberg, Peter Childs y Tom Rhodes.

  25.2.1. User PPP

    25.2.1.1. Aclaraciones

   Este documento asume que usted cuenta con lo siguiente:

     * Una cuenta activa con un Proveedor del Servicio de Internet (ISP-por
       sus siglas en inglees), que usted utliza para conectarse.

     * Adicionalmente, un modem o algun otro dispositivo, conectado a su
       sistema, y configurado correctamente, que le permite realizar la
       conexion con su ISP.

     * El numero telefonico de su proveedor.

     * Su nombre de usuario y contrasena. (Ya sea un nombre de usuario y/o
       contrasena estilo UNIX, o bien para uso por medio de PAP o CHAP)

     * La direccion IP de uno o mas servidores de nombres (DNS). Normalmente,
       estos seran provistos por su proveedor de Internet. Si su proveedor no
       le ha dado esta informacion, puede utilizar la opcion enable dns en su
       fichero ppp.conf, para indicarle a ppp que configure el DNS por usted.
       Esta caracteristica depende del sistema de negociacion de DNS que
       mantenga su proveedor de Internet.

   La siguiente informacion puede ser que haya sido provista por su proveedor
   de servicios de internet, pero no es completamente necesaria:

     * La direccion IP del gateway (pasarela de salida) de su PSI. El gateway
       es la maquina a la cual usted se conectara y sera la ruta por default.
       Si usted no cuenta con esta informacion, puede inventar uno y al
       intentar conectarse, el servidor de su PSI, este nos indicara cual es
       el valor correcto.

       Esta direccion IP, es referida por ppp como HISADDR.

     * La mascara de red (netmask) que debe utilizar. Si su PSI no le ha
       provisto de una, puede utilizar sin problema 255.255.255.255.

     * Si su PSI, le ha provisto de una direccion de IP estatica y un nombre
       de host, puede capturarla. De otra forma podemos dejar que el servidor
       asigne cualquier IP que corresponda.

   Si usted no cuenta con alguna de la informacion que hemos comentado, le
   recomendamos contactar con su PSI para requerirla.

  Nota:

   En el transcurso de la presente seccion, algunos ejemplos muestran el
   contenido de archivos de configuracion los cuales presentan una
   numeracion. Estos numeros sirven como ayuda y referencia a cada linea,
   pero estos no deben de estar presentes en el archivo original. Una sangria
   adecuada, asi como espacios adecuados, tambien son de suma importancia.

    25.2.1.2. Preparando el Kernel

   Como se comento anteriormente, la aplicacion ppp utiliza el dispositivo
   tun. Si este dispositivo no ha sido compilado dentro del kernel, ppp lo
   cargara como modulo cuando sea requerido. El dispositivo tun es dinamico,
   de tal forma que se generara de acuerdo a la demanda que tenga (usted no
   esta limitado por el kernel).

  Nota:

   Vale la pena hacer notar que el controlador tun, crea los dispositivos de
   acuerdo a sus necesidades, por lo que el comando ifconfig -a, no
   necesariamente mostrara los dispositivos tun.

    25.2.1.3. Verificando el dispositivo tun

   Bajo circunstancias normales, la mayoria de los usuarios solo utilizaran
   un dispositivo tun (/dev/tun0). En lo sucesivo podemos hacer referencia a
   tun0 con la expresion tunN donde N es el numero que corresponde en su
   sistema.

   Para instalaciones de FreeBSD que no tienen el habilitado el DEVFS la
   existencia de tun0 debe ser verificada (esto no es necesario si se cuenta
   habilitada la opcion DEVFS ya que los nodos de dispositivos sean creados
   en funcion a las necesidades).

   La forma mas sencilla de verificar si el dispositivo tun0 se encuentra
   configurado correctamente, es la de rehacer el dispositivo. Para hacer
   esto simplemente siga los siguientes pasos:

 # cd /dev
 # sh MAKEDEV tun0

   Si usted necesita 16 dispositivos tun en su kernel, debera crearlos. Esto
   puede hacerse de la siguiente manera:

 # cd /dev
 # sh MAKEDEV tun15

    25.2.1.4. Configuracion de la Resolucion de Nombres

   La resolucion es la parte del sistema que busca una direccion IP en los
   nombres de servidores (host) y viceversa. Puede ser configurado para que
   busque en "mapas" que describen la IP del servidor en uno de dos lugares,
   el primero es un archivo llamado /etc/hosts. Lea hosts(5) para mas
   informacion al respecto. El segundo es el Servicio de Nombres de Dominio
   de Internet (DNS-Internet Domain Name Service), el cual es una base de
   datos de distribucion. Para mayor informacion con respecto a los DNS,
   referirse a dns.

   La resolucion de nombres es un sistema que por medio de llamadas, realiza
   el mapeo de nombres, pero es necesario inidicarle donde debe buscar la
   informacion. Para versiones de FreeBSD anteriores a la 5.0, esto es hecho
   al editar el archivo /etc/host.conf. La version 5.0 de FreeBSD utiliza el
   archivo /etc/nsswitch.conf.

      25.2.1.4.1. Edicion del archivo /etc/host.conf

   Para versiones de FreeBSD anteriores a la 5.0, este archivo debe contener
   las siguientes dos lineas (en este orden):

 hosts
 bind

   Esto le indica a la resolucion que busque en primer termino en el archivo
   /etc/hosts, y posteriormente en el DNS, si el nombre no fue localizado

      25.2.1.4.2. Editando el archivo /etc/nsswitch.conf

   Para versiones de FreeBSD 5.0 y posteriores, este archivo debe contener,
   al menos, la siguiente linea:

 hosts: files, dns

   Esto le indica a la resolucion de nombres, que busque en primer lugar en
   el archivo /etc/hosts, y en caso de que el nombre no haya sido localizado,
   busque en el DNS.

      25.2.1.4.3. Editando el archivo /etc/hosts

   Este archivo puede contener direcciones IP, asi como el nombre de las
   maquinas de su red local. Como minimo debe contar con la informacion de la
   maquina que correra ppp. Asumiendo que su ordenador se llama foo.bar.com
   con la direccion IP 10.0.0.1, el archivo /etc/hosts debiese contener:

 127.0.0.1       localhost.bar.com       localhost
 ::1     localhost.bar.com       localhost
 10.0.0.1        foo.bar.com             foo

   Las primeras dos lineas definen el alias del localhost, como sinonimo de
   la maquina actual. Independientemente de su propia direccion IP, la
   direccion IP en estas lineas siempre debe ser 127.0.0.1 y ::1. La ultima
   linea especifica el nombre foo.bar.com (asi como foo para acortarlo), para
   la direccion 10.0.0.1.

  Nota:

   La direccion 127.0.0.1 y el nombre localhost son conocidos como
   direcciones "loopback" las cuales hacen un "loopback" (salto de regreso) a
   la maquina local.

   Si su proveedor de Internet, le asigna una direccion IP fija, asin como un
   nombre, y usted no lo utiliza como nombre del host, anada esto tambien al
   archivo /etc/hosts.

      25.2.1.4.4. Editando el archivo /etc/resolv.conf

   El archivo /etc/resolv.conf, le indica a la resolucion de nombres, como
   comportarse. Normalmente debera de incluir la(s) siguiente(s) linea(s):

 domain ejemplo.com
 nameserver x.x.x.x
 nameserver y.y.y.y

   Donde x.x.x.x y y.y.y.y deben reemplazarse con las direcciones IP de los
   servidores DNS, de su ISP. Puede ser que esta informacion se la hayan
   entregado al suscribirse o no, pero una rapida llamada a su ISP debe
   resolver esto.

   Tambie puede configurar su sistema, de tal forma que syslog(3) provee de
   un login para su coneccion por PPP. Solo anada:

           !ppp
           *.*        /var/log/ppp.log

   al fichero /etc/syslog.conf. En la mayoria de los casos esto funciona
   bien.

    25.2.1.5. Configuracion Automatica de PPP

   Ambos, ppp asi como pppd (la implementacion del kernel para PPP), utilizan
   la configuracion de los archivos localizados en el directorio /etc/ppp.
   Ejemplos para ppp, pueden encontrarse en: /usr/share/examples/ppp/.

   Para efecto de configurar correctamente ppp, es necesario editar varios
   ficheros, dependiendo de sus necesidades. La manera en que edite dichos
   archivos, depende en la forma que utilice su PSI (Proveedor de Servicios
   de Internet) para brindarle conexion, ya sea por medio de una direccion IP
   estatica o bien una IP dinamica (ya sea que cada vez que se conecta
   obtiene una nueva direccion).

      25.2.1.5.1. PPP y direcciones de IP estaticas (fijas)

   Sera necesario editar el archivo de configuracion; /etc/ppp/ppp.conf. Y
   debera quedar de una manera similar al ejemplo que se describe a
   continuacion.

  Nota:

   Las lineas que terminan con :, deben comenzar en la primer columna del
   archivo - el resto de las lineas deberan utilizar sangria como se muestra,
   utilizando espacios o bien el tabulador. La mayor parte de la informacion
   que requiere ingresar aqui, se mostro en el marcado manual anterior.

 1     default:
 2       set log Phase Chat LCP IPCP CCP tun command
 3       ident user-ppp VERSION (built COMPILATIONDATE)
 4       set device /dev/cuaa0
 5       set speed 115200
 6       set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
 7                 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
 8       set timeout 180
 9       enable dns
 10
 11    provider:
 12      set phone "(123) 456 7890"
 13      set authname foo
 14      set authkey bar
 15      set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
 16      set timeout 300
 17      set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0
 18      add default HISADDR

   Linea 1:

           Identifica la entrada por omision a utilizar. Los comandos
           descritos en esta parte, seran ejecutados de manera automatica
           cuando se ejecute ppp.

   Linea 2:

           Habilita los par'metros de acceso. Cuando la configuracion trabaja
           sin problemas, esta linea debera quedar de la siguiente forma:

 set log phase tun

           para efecto de evitar avisos masivos del sistema (logs).

   Linea 3:

           Esta linea le indica a PPP como identificarse ante el puerto. PPP
           se identifica, si tiene algun problema para efecto de establecer
           la conexion, en esta identificacion, PPP provee de cierta
           informacion que puede resultar util para detectar el probelma.

   Linea 4:

           Le indica a PPP cual es el dispositivo a utilizar para realizar la
           conexion, o bien al que esta conectado el modem. El dispositivo
           COM1 es /dev/cuaa0 y COM2 es /dev/cuaa1.

   Linea 5:

           Establece la velocidad a utilizar en la conexion. Si la velocidad
           de 115200 no trabaja correctamente (la cual deberia con cualquier
           modem normal), intente con una velocidad inferior, como puede ser
           38400.

   Lineas 6 y 7:

           La cadena de inicializacion. El modo User PPP, utiliza y espera
           enviar-recibir, la informacion utilizando una sintaxis similar a
           la descrita en el programa chat(8). Favor de consultar la pagina
           de ayuda para conocer las opciones de este lenguaje.

           Nota: Este comando continua en la siguiente linea, para facilitar
           su lectura. Cualquier comando en el archivo ppp.conf puede
           utilizar este formato, siempre y cuando el ultimo caracter de la
           linea sea una diagonal invertida "\".

   Linea 8:

           Establece el tiempo de espera que debe tratar de realizar la
           conexion. Por omision se establecen 180 segundos, por lo que esta
           linea se deja por pura estetica.

   Linea 9:

           Esta linea le indica a PPP, que solicite confirmacion al puerto,
           sobre la configuracion de la resolucion local. Si usted esta
           corriendo un servidor local de nombres, debera comentar o eliminar
           esta linea.

   Linea 10:

           Una linea en blanco, para facilitar la lectura. Las lineas en
           blanco son ignoradas por PPP.

   Linea 11:

           Identifica el incio de datos para un "proveedor" determinado, de
           servicios de internet. Este podra ser cambiado por el nombre de su
           ISP, de tal forma que en lo sucesivo utilice la opcion load ISP,
           para iniciar una sesion.

   Linea 12:

           Indica el numero telefonico del proveedor. Pueden indicarse varios
           numeros a utilizar, utilizando el signo de dos puntos (:) o bien
           la barra (|) como separador. La diferencia entre estos dos
           separadores, es detallada en el ppp(8). Pero en resumen, se puede
           decir que si se desean utilizar varios numeros de manera aleatoria
           se debe utilizar los dos puntos, pero si se desea siempre utilizar
           el primer numero y en caso de falla el siguiente y asi
           sucesivamente, se debe utilizar la barra. Es importante que todo
           lo que se refiere a numeros telefonicos, este entre comillas como
           se muestra. Es importante que si piensa usar espacios en los
           numeros, haga uso de estas comillas ("). La falta de estas pueden
           ocasionar un simple error.

   Lineas 13 y 14:

           Identifica el nombre de usuario y su contrasena. Cuando uno se
           conecta utilizando un login de tipo Unix, estos valores hacen
           referencia al comando set login, utilizando las variables \U y \P.
           Cuando la conexion es utilizando algun metodo como PAP o CHAP,
           estos valores, son utilizados al momento de la autentificacion.

   Linea 15:

           Si usted esta utilizando el metodo PAP o CHAP, no habra un login
           en este punto, y esta linea debera ser comentada (utilizando el
           simbolo # al principio de la linea) o bien eliminada por completo.
           Vea la parte Autentificacion con PAP y CHAP para mas detalles.

           La cadena de acceso (login), utiliza la misma sintaxis que se
           utiliza en la cadena de marcado. En este ejemplo, la cadena sirve
           para un servicio, en el cual el inicio de sesion se ve algo asi
           como lo siguiente:

 Proveedor de servicios X
 login: foo
 password: bar
 protocol: ppp

           Es recomendable editar el script, para que se ajuste a sus propias
           necesidades. Cuando cree este script por primera vez, asegurese de
           haber habilitado la parte que se refiere a al acceso por medio de
           "chat", para efecto de poder dar seguimiento al curso de la
           conexion y la resolucion de la misma.

   Linea 16:

           Establece el tiempo por defecto en el que se perdera la conexion
           (en segundos). En este caso la conexion sera cortada de forma
           automatica, despues de 300 segundos de inactividad. Si no desea
           habilitar esta funcion establezca este valor en cero o bien
           utilice el comando en linea -ddial.

   Linea 17:

           Indica la direccion de la interfaz. La cadena que aparece como
           x.x.x.x., debe se cambiada por la direccion asignada por su PSI.
           La linea que aparece como y.y.y.y., debe se substituida por la
           direccio IP especificada por su PSI, como servidor de salida o
           pasarela (gateway)(la maquina a la cual se va a conectar). Si su
           PSI no le ha indicado una direccion de este tipo, puede utilizar
           10.0.0.2/0. Si usted necesita utilizar una direccion "aleatoria",
           asegurese de crear el fichero /etc/ppp/ppp.linkup, siguiendo las
           instrucciones de PPP y las direcciones de IP Dinamicas, para su
           llenado. Si esta linea es omitida, ppp, no podra ejecutarse en el
           modo -auto.

   Linea 18:

           Anade una ruta por omision al servidor de salida de su PSI. La
           palabra especial HISADDR se reemplaza con la direccion del gateway
           indicado por su PSI, que esta en la linea 9, de otra forma HISADDR
           no sera inicializado.

           Si no desea ejecutar ppp en modo -auto, esta linea debera pasar al
           archivo ppp.linkup.

   No hay necesidad de editar el archivo ppp.linkup si usted cuenta con una
   direccion IP estatica y se esta ejecutando ppp en modo -auto, en virtud de
   que para efecto de realizar la conexion sus mapas de ruteo debe estar
   correctas. De cualquier forma puede ser que usted desee ejecutar algun
   programa/comando, posterior a la conexion. Este es explicado con mas
   detalle posteriormente, cuando se vea el ejemplo de sendmail.

   Ejemplo de los archivos de configuracion, se pueden encontrar en el
   directorio; /usr/share/examples/ppp.

      25.2.1.5.2. PPP y direcciones de IP Dinamicas (Variables)

   Si su proveedor de servicios, no le asigna una direccion de IP fija, sera
   necesario configurar a ppp, de tal forma que al momento de realizar la
   conexion, negocie tanto la direccion local, como la remota. Esto se lleva
   a cabo al "adivinar" una direccion IP y permitiendo a ppp que la
   establezca correctamente, usando el Protocolo de Configuracion de IP
   (IPCP), una vez que se ha conectado. La configuracion que debe tener el
   archivo ppp.conf, es la misma que la utilizada en PPP y direcciones de IP
   fijas, salvo el siguiente cambio:

 17      set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255

   Una vez mas, no debe incluir el numero de linea, este solo es una
   referencia. Asi mismo debera existir sangrado, de cuando menos 1 espacio.

   Linea 17:

           El numero siguiente a la diagonal (/), es el numero de bits de la
           direccion en la cual ppp insistira en conectarse. Puede ser que
           usted desee utilizar numeros de IP que sean mas apropiados, para
           ajustar a sus necesiadades, pero el ejemplo descrito anteriormente
           siempre podra utilizarse.

           El ultimo argumento (0.0.0.0), le indica a PPP, que inicie las
           negociaciones, utilizando como direccion 0.0.0.0, en lugar de que
           utilice 10.0.0.1, lo cual es necesario con algunos proveedores. No
           utilice la direccion 0.0.0.0 como el primer argumento, para el
           comando set ifaddr, ya que impide que PPP configure de forma
           correcta el sistema, cuando se utiliza en modo -auto.

   Si usted no esta ejecutando PPP en modo -auto, debera editar su archivo
   /etc/ppp/ppp.linkup. El archivo ppp.linkup, es utilizado una vez que se ha
   realizado la conexion. En este punto, ppp habra negociado una direccion de
   interfaz, y sera posible ahora, anadir las entradas para la las tablas de
   ruteo:

 1     provider:
 2      add default HISADDR

   Linea 1:

           Al establecer (ppp) una conexion, buscara en ppp.linkup una
           entrada, de acuerdo a las siguientes reglas. Primero, tratar de
           encontrar una entrada que sea igual a la utilizada en el archivo
           ppp.conf. Si esto falla, buscar una IP con la direccion de nuestro
           gateway. Esta entrada es una etiqueta de tipo IP, de
           cuatro-octetos. Si aun despues de esto no se ha detectado la
           entrada correcta, buscar la entrada MYADDR.

   Linea 2:

           Esta linea le indica a ppp que anada una ruta por omision, que
           este dirigida hacia HISADDR. HISADDR sera reemplazada, con la IP
           del gateway, como se negocio por IPCP.

   Para ver un detalle mas preciso de esto, puede consultar la entrada de
   pmdemand en los archivos de ejemplo
   /usr/share/examples/ppp/ppp.conf.sample asi como
   /usr/share/examples/ppp/ppp.linkup.sample.

      25.2.1.5.3. Recibiendo Llamadas Externas

   Cuando se configure ppp, para recibir llamadas externas, en una maquina
   conectada a un LAN (Red de Area Local), debe decidir si se va a permitir
   el envio de paquetes a la LAN. Si es asi, debe asignar un numero de IP de
   su red local y utilizar el comando enable proxy en el archivo de
   configuracion /etc/ppp/ppp.conf. Tambien debera asegurarse que en su
   archivo /etc/rc.conf cuente con la linea:

 gateway_enable="YES"

        25.2.1.5.3.1. ?Que getty utilizar?

   El enlace Configurando FreeBSD para Servicios de Marcado provee de una
   buena descripcio, sobre la configuracion de estos servicios, basado en
   getty(8).

   Una alternativa para el comando getty es mgetty , el cual es una version
   mas inteligente de getty disenada para servicios de marcado telefonico.

   Una de las principales ventajas de mgetty es que, de hecho platica con los
   modems, esto es, significativo, ya que si el puerto esta desactivado en su
   /etc/ttys el modem no respondera el llamado.

   Las ultimas versiones de mgetty (de la 0.99beta y sucesivas), tambien
   cuentan con soporte para la deteccion automatica de llamados de PPP,
   permitiendo el acceso a servidores de una manera mas sencilla (sin uso de
   tanto scripts).

   Puede referirse a Mgetty y AutoPPP para mas informacion con respecto al
   comando mgetty.

        25.2.1.5.3.2. Permisos de PPP

   El comando ppp normalmente debe ser ejecutado por root (superusuario). Si
   de cualquier forma, usted desea permitir que ppp pueda ser ejecutado en
   modo servidor, por un usuario regular, como se describe a continuacion,
   debera otorgar los permisos necesarios a ese usuario al anadirlo al grupo
   network, en el fichero /etc/groups.

   Tambien sera necesario darle acceso a una o mas partes del archivo de
   configuracion, haciendo uso del comando allow, como se ve a continuacion:

 allow users fred mary

   Si el comando es utilizado en la seccion default, esto le dara a el(los)
   usuario(s) especificado(s), acceso a todo.

        25.2.1.5.3.3. Shells de PPP para Usuarios de IP Dinamica

   Cree un fichero llamado: /etc/ppp/ppp-shell y que contenga lo siguiente:

 #!/bin/sh
 IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
 CALLEDAS="$IDENT"
 TTY=`tty`

 if [ x$IDENT = xdialup ]; then
         IDENT=`basename $TTY`
 fi

 echo "PPP for $CALLEDAS on $TTY"
 echo "Starting PPP for $IDENT"

 exec /usr/sbin/ppp -direct $IDENT

   Este script debera ser ejecutable. Ahora cree un enlace simbolico llamado
   ppp-dialup a este script, utilizando los siguientes comandos:

 # ln -s ppp-shell /etc/ppp/ppp-dialup

   Debera utilizar este script como shell para todos los usuarios que
   realicen conexion. Este es un ejemplo del fichero /etc/password para un
   usuario con acceso a PPP, con nombre de usuario pchilds (recuerde no
   editar directamente el fichero password, utilice vipw).

 pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup

   Cree un directorio llamado /home/ppp que contenga los siguentes archivos
   de 0 bytes:

 -r--r--r--   1 root     wheel           0 May 27 02:23 .hushlogin
 -r--r--r--   1 root     wheel           0 May 27 02:22 .rhosts

   los cuales impiden que /etc/motd sea desplegado.

        25.2.1.5.3.4. Shells de PPP para Usuarios de IP Estatica

   Cree el fichero ppp-shell al igual que el mencionado con anterioridad, y
   por cada cuenta donde se tenga asignada una IP estatica, cree un enlace
   simbolico al fichero ppp-shell.

   Por ejemplo, si usted cuenta con tres usuarios que utilicen este servicio;
   fred, sam y mary, los cuales redirecciona a una red de clase C, habria que
   hacer lo siguiente:

 # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
 # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
 # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary

   Cada uno de los usuarios senalados, deberan de contar con el enlace a su
   shell-script como se indico (por ejemplo, el usuario mary, debe contar con
   su enlace al fichero /etc/ppp/ppp-mary).

        25.2.1.5.3.5. Configurando ppp.conf para Usuarios de IP-Dinamica

   El archivo /etc/ppp/ppp.conf debera contener algo similar a lo siguiente:

 default:
   set debug phase lcp chat
   set timeout 0

 ttyd0:
   set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
   enable proxy

 ttyd1:
   set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
   enable proxy

  Nota:

   Tomar en cuenta el sangrado, ya que es importante.

   La seccion default: es cargada para cada sesion. Para cada linea que
   exista y habilite el marcado, en el fichero /etc/ttys, se debera crear una
   entrada similar a la linea ttyd0: mencionada arriba. Cada linea debera
   contar con su propia direccion IP, de sus direcciones IP disponibles para
   asignar dinamicamente.

        25.2.1.5.3.6. Configurando ppp.conf para Usuarios de IP Estatica

   Junto con el contenido del fichero de ejemplo
   /usr/share/examples/ppp/ppp.conf mencionado anteriormente, debera agregar
   una seccion para cada usuario asignado estaticamente. Continuaremos con
   nuestro ejemplo con los usuarios fred, sam y mary.

 fred:
   set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255

 sam:
   set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255

 mary:
   set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255

   El archivo /etc/ppp/ppp.linkup debera de contener tambien informacion del
   ruteo, para cada IP estatica, si es necesario. Las lineas a continuacion
   anadiran una ruta a la direccion 203.14.101.0 de clase C, por medio del
   ppp link del cliente.

 fred:
   add 203.14.101.0 netmask 255.255.255.0 HISADDR

 sam:
   add 203.14.102.0 netmask 255.255.255.0 HISADDR

 mary:
   add 203.14.103.0 netmask 255.255.255.0 HISADDR

      25.2.1.5.4. Algo mas de mgetty, AutoPPP, y Extensiones MS

        25.2.1.5.4.1. mgetty y AutoPPP

   Configurando y compilando mgetty con la opcion AUTO_PPP habilitada,
   permite a mgetty detectar la fase LCP de conexiones PPP y automaticamente
   enviarlo a un shel de ppp. Aun con esto, y debido a que no se ingresa el
   nombre de usuario y contrasena, es necesario autntificarse por medio de
   PAP o CHAP.

   Esta seccion asume que el usuaio ha configurado, compilado e instalado
   correctamente una version de mgetty, con la opcion Auto_PPP (v0.99beta o
   posterior).

   Asegurese de que su fichero /usr/local/etc/mgetty+sendfax/login.conf
   contiene la siguiente linea en el:

 /AutoPPP/ -     -                     /etc/ppp/ppp-pap-dialup

   Esto le indicara a mgetty que ejecute el script ppp-pap-dialup, para
   efecto de detectar conexiones de tipo PPP.

   Cree un fichero llamado /etc/ppp/ppp-pap-dialup que contenga las
   siguientes lineas (el fichero debera ser ejecutable):

 #!/bin/sh
 exec /usr/sbin/ppp -direct pap$IDENT

   Para cada linea de marcado habilitada en /etc/ttys, cree la entrada
   correspondiente en /etc/ppp/ppp.conf. Esto co-existira pacificamente con
   las definiciaones que se hayan hecho, de acuerdo a lo mostrado en la parte
   de arriba.

 pap:
   enable pap
   set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
   enable proxy

   Cada usuario que ingrese al sistema utilizando este metodo, debera de
   contar con su clave de usuario, asi como su contrasena, en el archivo
   /etc/ppp/ppp.secret, o bien agrege la siguiente opcion, para efecto de que
   se pueda realizar la autentificacion por medio de PAP, directamente del
   fichero /etc/password.

 enable passwdauth

   Si desea asignar una direccion IP fija a algunos usuarios, puede
   especificar el numero como un tercer argumento en el fichero
   /etc/ppp/ppp.secrets. Vea el archivo
   /usr/share/examples/ppp/ppp.secret.sample para obtener ejemplos mas
   detallados de esto.

        25.2.1.5.4.2. Extensiones de MS

   Es posible configurar PPP, para efecto de que brinde a DNS y a NetBIOS,
   direcciones de servidores de nombres de forma automatica.

   Para efecto de habilitar estas extensiones con PPP version 1.x, las
   siguientes lineas deberan anadirse a la seccion relevante de
   /etc/ppp/ppp.conf.

 enable msext
 set ns 203.14.100.1 203.14.100.2
 set nbns 203.14.100.5

   Y para versiones de PPP 2 y posteriores:

 accept dns
 set dns 203.14.100.1 203.14.100.2
 set nbns 203.14.100.5

   Esto le indicara a los clientes, las direcciones del servidor primario y
   secundario y el servidor-host para NetBIOS.

   Si la linea set dns, es omitida en versiones 2 y posteriores, PPP
   utilizara los valores que encuentre en /etc/resolv.conf.

      25.2.1.5.5. Autentificacion por medio de PAP y CHAP

   Algunos proveedores de internet tienen su sistema configurado para que
   cada usuario al conecatrse sean autentificados por medio de PAP o CHAP. Si
   este es el caso, al momento de realizar la conexion, no aparecera un
   login:, sino que comenzara a comunicarse PPP inmediatamente.

   El metodo PAP es menos seguro que CHAP, pero la seguridad normalmente no
   se toma mucho en cuenta en este tipo de conexiones, en funcion de que al
   enviarse la informacion de contrasena en texto plano, por medio de una
   linea serial, no deja mucho espacio para que los crackers "husmeen".

   Haciendo referencia a lo que vimos de PPP y Direcciones de IP Fijas o bien
   PPP y Direcciones de IP Dinamicas, habria que aplicar los siguientes
   cambios:

 7       set login
 ...
 12      set authname MiNombreDeUsuario
 13      set authkey MiContrasena

   Linea 7:

           Su PSI normalmente requerira que usted ingrese al sistema, cuando
           se utiliza PAP o CHAP. Por esta razon debemos deshabilitar la
           linea que corresponde a "set login".

   Linea 12:

           Esta linea especifica a PAP/CHAP su nombre de usuario. Usted
           debera cambiar el valor a quedar el nombre correcto en el campo;
           MiNombreDeUsuario.

   Linea 13:

           Esta linea especifica su contrasena de PAP/CHAP. Es necesario que
           usted cambie el valor a quedar el dato correcto, en el campo;
           MiContrasena. Quizas sea recomendable que anada una linea a
           quedar:

 15      accept PAP

           o

 15      accept CHAP

           la intencion de esto es para hacerlo obvio, aunque en realidad PAP
           y CHAP son aceptadas por omision.

      25.2.1.5.6. Cambiando la configuracion de ppp sobre la marcha (al vuelo)

   Es posible hablar con el programa ppp mientras se esta ejecutando en
   segundo plano, pero solo si se ha habilitado un puerto de diagnostico.
   Para hacer esto, anada lo siguiente a su configuracion:

 set server /var/run/ppp-tun%d DiagnosticPassword 0177

   Esto le indicara a PPP que preste atencion al socket del dominio-Unix,
   solicitando a los usuarios su contrasena, antes de permitir el acceso. La
   variable %d debera ser reemplazada por el numero de dispositivo tun que
   este utilizando (ej. tun0).

   Una vez que se a configurado el socket, se puede utilizar pppctl(8) en
   scripts que deseen manipular el programa.

    25.2.1.6. Configuracion Final del Sistema

   Ahora usted cuenta con un ppp configurado, pero es necesario hacer algunas
   cosas, antes de que este disponible para trabajar. Todas ellas giran
   entorno a la edicion del fichero /etc/rc.conf.

   En primer lugar es importante que se asegure que ha asignado un nombre a
   su maquina. Esto se hace asignandolo en la linea de hostname=, por
   ejemplo:

 hostname="foo.ejemplo.com"

   Si su Proveedor de Servicios de Internet (PSI), le ha provisto de una
   direccion fija y un nombre de host, es recomendable que utilice este como
   su hostname.

   Localice la linea que se refiera a sus dispositivos de red, la cual es
   network_interfaces. Si desea configurar su sistema para marcar a su PSI a
   peticion, asegurese de que el dispositivo tun0 este en la lista, de otra
   forma eliminelo.

 network_interfaces="lo0 tun0" ifconfig_tun0=

  Nota:

   La variable ifconfig_tun0 debe permanecer en blanco (vacia), y debera
   crearse un fichero llamado /etc/start_if.tun0 que contenga la siguiente
   linea:

 ppp -auto MiSistema

   Este script se ejecuta cuando se esta configurando la red, inicializando
   el demonio de ppp de modo automatico. Si usted cuenta con una LAN (red de
   area local), de la cual esta maquina sea la pasarela (gateway), es tambien
   recomendable que utilice la opcion -alias. Referirse a la pagina de ayuda
   (man) para mayores detalles.

   Especifique el programa router a NO, con la siguiente linea en su fichero
   /etc/rc.conf:

 router_enable="NO"

   Es importante que el demonio routed no se inicialice por default, en
   virtud de que routed tiende a eliminar las variables creadas por ppp.

   Probablemente valga la pena asegurarse de que la linea sendmail_flags, no
   incluya la opcion -q, ya que de ser asi sendmail intentara localizar los
   parametros de la red de vex en cuando, ocasionando que realice llamados al
   exterior. Puede intentar esto:

 sendmail_flags="-bd"

   La parte negativa de esta conifguracion es que tiene que forzar a sendmail
   a re-examinar los llamados del servidor de correo, cada vez que ppp
   realiza una conexion, con el siguiente comando:

 # /usr/sbin/sendmail -q

   Puede utilizar el comando !bg en el fichero ppp.linkup para hacer esto de
   manera automatica:

 1     provider:
 2       delete ALL
 3       add 0 0 HISADDR
 4       !bg sendmail -bd -q30m

   Si usted no desea hacer esto, es posible establecer un "dfilter" (filtro),
   para bloquear el trafico al servidor de salida de correo (SMTP). Favor de
   referirse a los archivos de ejemplos para mayor detalle al respecto.

   Ahora lo unico que queda pendiente de hacerse es reiniciar el equipo. Una
   vez reiniciado el equipo, puede teclear:

 # ppp

   y posteriormente dial proveedor para iniciar la sesion, o bien si desea
   que ppp inicie la sesion automaticamente, cuando haya una peticion de
   salida (y no haya creado el fichero start_if.tun0), puede teclear:

 # ppp -auto proveedor

    25.2.1.7. Summario

   A manera de recapitulacion, podemos decir que para configurar ppp por
   primera ocasion, debemos:

   Por parte del Cliente:

    1. Asegurese de que existe el dispositivo tun dentro de su kernel.

    2. Asegurses de que el dispositivo tunX, se encuentra disponible, bajo el
       directorio /dev.

    3. Cree una entrada en su fichero /etc/ppp/ppp.conf. Con el fichero de
       ejemplo pmdemand debe ser suficiente para la mayoria de proveedores.

    4. Si cuenta con una direccion de IP dinamica, cree una entrada en el
       fichero /etc/ppp/ppp.linkup .

    5. Actualice su fichero /etc/rc.conf.

    6. Cree un archivo script llamado start_if.tun0 si requiere servicio de
       conexion a solicitud.

   Por parte del Servidor:

    1. Asegurese de que dentro de su kernel exista el dispositivo tun.

    2. Asegurses de que el dispositivo tunX, se encuentra disponible, bajo el
       directorio /dev.

    3. Cree una entrada en el fichero /etc/passwd (usando el programa
       vipw(8)).

    4. Cree un perfil en el directorio home de este usuario, que ejecute ppp
       -direct direct-server o algo similar.

    5. Cree una entrada en el fichero /etc/ppp/ppp.conf. El fichero de
       ejemplo direct-server debe ser suficiente para darse una idea.

    6. Cree una entrada en el fichero /etc/ppp/ppp.linkup.

    7. Actualice su fichero /etc/rc.conf.

25.3. Uso de Kernel PPP

   Partes originalmente desarrolladas por Gennady B. Sorokopud y Robert Huff.

  25.3.1. Configurando Kernel PPP

   Antes de comenzar a configurar PPP en su maquina, asegurese de pppd se
   localiza en /usr/sbin y de que existe el directorio /etc/ppp.

   pppd puede trabajar de dos maneras

    1. Como un "cliente" - cuando desea conectar su maquina al mundo exterior
       utilizando PPP, por medio de una conexion serial o bien una linea de
       modem.

    2. como un "servidor" - cuando su maquina esta conectada a una red y es
       utilizada para que otras maquinas se conecten utilizando ppp.

   En ambos casos, sera necesario configurar un fichero de opciones
   (/etc/ppp/options o bien ~/.ppprc si se cuenta con mas de un usuario que
   utilizara ppp en la misma maquina.

   Tambien debera de contar con un software para hacer la conexion por medio
   de modem (de preferencia kermit), de manera que pueda hacer la conexion
   con un host remoto.

  25.3.2. Uso de pppd como Cliente

   Basedo en informacion provista por Trev Roydhouse.

   El siguiente archivo de configuracion /etc/ppp/options puede utilizarse
   para realizar la conexion a una terminal CISCO, por medio de PPP.

 crtscts         # habilita el flujo de controls de hardware
 modem           # linea de control del modem
 noipdefault     # el servidor PPP remoto asignara la direccion IP
                 # si el servidor no envia una direccion IP durante IPCP
                 # remueva esta opcion.
 passive         # espere por los paquetes LCP
 domain ppp.foo.com      # escriba su nombre de dominio aqui

 :<remote_ip>    # escriba la IP del host remoto aqui
                 # este sera utilizado para el ruteo de paquetes por medio
                 # de PPP, si no especifica esta opcion, cambie la
                 # linea a quedar  <local_ip>:<remote_ip>

 defaultroute    # establezca esta opcion si el servidor su ruteador
                 # por default

   Para conectarse:

    1. Realice el llamado al host remoto, utilizando kermit (o cualquier otra
       aplicacion de este tipo), ingrese su nombre de usuario y contrasena (o
       cualquier info que sea necesaria para habilitar PPP en el host
       remoto).

    2. Salga de kermit (sin colgar la linea).

    3. Ingrese lo siguiente:

 # /usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200

       Asegurese de utilizar el dispositivo y la velocidad adecuados.

   Ahora su computadora esta conectada por medio de PPP. Si la conexion
   falla, puede anadir la opcion debug en el fichero /etc/ppp/options de tal
   forma que pueda verificar la que esta ocurriendo y pueda resolver el
   problema.

   El siguiente script; /etc/ppp/pppup realizara los 3 pasos de forma
   automatica:

 #!/bin/sh
 ps ax |grep pppd |grep -v grep
 pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing pppd, PID=' ${pid}
         kill ${pid}
 fi
 ps ax |grep kermit |grep -v grep
 pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing kermit, PID=' ${pid}
         kill -9 ${pid}
 fi

 ifconfig ppp0 down
 ifconfig ppp0 delete

 kermit -y /etc/ppp/kermit.dial
 pppd /dev/tty01 19200

   El fichero /etc/ppp/kermit.dial es un script de kermit, uqe realiza el
   marcado y negocia la autorizacion necesaria con el host remoto (un ejemplo
   de este script se encuentra al final de este documento).

   Utilice el siguiente script, llamado /etc/ppp/pppdown para desconectar la
   linea PPP:

 #!/bin/sh
 pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
 if [ X${pid} != "X" ] ; then
         echo 'killing pppd, PID=' ${pid}
         kill -TERM ${pid}
 fi

 ps ax |grep kermit |grep -v grep
 pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing kermit, PID=' ${pid}
         kill -9 ${pid}
 fi

 /sbin/ifconfig ppp0 down
 /sbin/ifconfig ppp0 delete
 kermit -y /etc/ppp/kermit.hup
 /etc/ppp/ppptest

   Verifique que su PPP aun se esta ejecutando, por medio de
   /usr/etc/ppp/ppptest, que debera verse algo similar a esto:

 #!/bin/sh
 pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'`
 if [ X${pid} != "X" ] ; then
         echo 'pppd running: PID=' ${pid-NONE}
 else
         echo 'No pppd running.'
 fi
 set -x
 netstat -n -I ppp0
 ifconfig ppp0

   Para colgar el modem, ejecute /etc/ppp/kermit.hup, que debera contener:

 set line /dev/tty01     ; aqui va el dispositivo del modem
 set speed 19200
 set file type binary
 set file names literal
 set win 8
 set rec pack 1024
 set send pack 1024
 set block 3
 set term bytesize 8
 set command bytesize 8
 set flow none

 pau 1
 out +++
 inp 5 OK
 out ATH0\13
 echo \13
 exit

   He aqui un metodo alterno, donde se utiliza chat en lugar de utilizar
   kermit.

   Los siguientes dos ficheros deben ser suficiente, para realizar una
   conexion por medio de pppd.

 /dev/cuaa1 115200

 crtscts         # habilita el control de flujo por medio de hardware
 modem           # linea de control del modem
 connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
 noipdefault     # el servidor remoto debe asignar la direccion IP.
                 # si el servidor no asigna una IP durante la negociacion
                 # IPCP , remueva esta linea y espere por los
 passive         # paquetes LCP
 domain <your.domain>    # aqui va su dominio

 :               # escriba la IP del host remoto aqui
                 # si no ha especificado la opcion noipdefault
                 # cambie esta linea a quedar <local_ip>:<remote_ip>

 defaultroute    # escriba esto, si desea que el servidor PPP sea su
                     # router por default

   /etc/ppp/login.chat.script:

  Nota:

   Lo siguiente debe ir en una sola linea.

 ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<numero.de.telefono>
   CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <nombre.usuario>
   TIMEOUT 5 sword: <contrasena>

   Una vez que estos ficheros han sido modificados correctamente e
   instalados, todo lo que necesita es ejecutar el comando pppd, algo como:

 # pppd

  25.3.3. Uso de pppd como Servidor

   El fichero /etc/ppp/options debe contener algo similar a lo siguiente:

 crtscts   # control de flujo por Hardware
 netmask 255.255.255.0           # mascara de red (no es requisito)
 192.114.208.20:192.114.208.165  # direcciones ip del host local y remoto
                                 # la direccion ip local debe ser
                                 # diferente a la que le haya asignado a su
                                 # dispositivo de red ethernet (u otro)
                                 # la direccion ip remota que sera
                                 # asignada a la maquina remota
 domain ppp.foo.com              # su dominio
 passive                         # espera por LCP
 modem                           # linea de modem

   El siguiengte script, llamado /etc/ppp/pppserv habilitara pppd, para que
   actue como servidor:

 #!/bin/sh
 ps ax |grep pppd |grep -v grep
 pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing pppd, PID=' ${pid}
         kill ${pid}
 fi
 ps ax |grep kermit |grep -v grep
 pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing kermit, PID=' ${pid}
         kill -9 ${pid}
 fi

 # reset ppp interface
 ifconfig ppp0 down
 ifconfig ppp0 delete

 # enable autoanswer mode
 kermit -y /etc/ppp/kermit.ans

 # run ppp
 pppd /dev/tty01 19200

   Utilice el script /etc/ppp/pppservdown para detener el servidor:

 #!/bin/sh
 ps ax |grep pppd |grep -v grep
 pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing pppd, PID=' ${pid}
         kill ${pid}
 fi
 ps ax |grep kermit |grep -v grep
 pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing kermit, PID=' ${pid}
         kill -9 ${pid}
 fi
 ifconfig ppp0 down
 ifconfig ppp0 delete

 kermit -y /etc/ppp/kermit.noans

   El siguiente script de kermit (/etc/ppp/kermit.ans) habilita/deshabilita
   el modo de autorespuesta en su modem. Y debe verse algo similar a lo
   siguiente:

 set line /dev/tty01
 set speed 19200
 set file type binary
 set file names literal
 set win 8
 set rec pack 1024
 set send pack 1024
 set block 3
 set term bytesize 8
 set command bytesize 8
 set flow none

 pau 1
 out +++
 inp 5 OK
 out ATH0\13
 inp 5 OK
 echo \13
 out ATS0=1\13   ; cambiar esto a quedar out ATS0=0\13 si desea deshabilitar el modo
                 ; de autorespuesta
 inp 5 OK
 echo \13
 exit

   Un script llamado /etc/ppp/kermit.dial es utilizado para llamar y
   autentificarse en un host remoto. Es necesario que edite este fichero, de
   acuerdo a sus necesidades. Escriba su nombre de usuario (login) y
   contrasena (password) en este fichero, tambien sera necesario cambiar su
   metodo de conexion, de acuerdo a lo que se ajuste a sus necesidades.

 ;
 ; ingrese el dispositivo que esta apuntando a su modem:
 ;
 set line /dev/tty01
 ;
 ; escriba la velocidad del modem:
 ;
 set speed 19200
 set file type binary            ; full 8 bit file xfer
 set file names literal
 set win 8
 set rec pack 1024
 set send pack 1024
 set block 3
 set term bytesize 8
 set command bytesize 8
 set flow none
 set modem hayes
 set dial hangup off
 set carrier auto                ; Posteriormente SET CARRIER si es necesario
 set dial display on             ; despues SET DIAL si es necesario
 set input echo on
 set input timeout proceed
 set input case ignore
 def \%x 0
 goto slhup

 :slcmd                          ; cambio a modo de comando
 echo Put the modem in command mode.
 clear                           ; Limpieza del buffer de entrada
 pause 1
 output +++
 input 1 OK\13\10                ; esperar para OK
 if success goto slhup
 output \13
 pause 1
 output at\13
 input 1 OK\13\10
 if fail goto slcmd              ; si el modem no responde Ok, intentar de nuevo

 :slhup                          ; colgar el telefono
 clear                           ; Limpieza del buffer de entrada
 pause 1
 echo Hanging up the phone.
 output ath0\13
 input 2 OK\13\10
 if fail goto slcmd              ; si no hay un OK como respuesta, poner el modem en modo de comando

 :sldial                         ; marcar el numero telefonico
 pause 1
 echo Dialing.
 output atdt9,550311\13\10               ; escriba el numero de telefono
 assign \%x 0                    ; asignar cero al contador

 :look
 clear                           ; Limpieza del buffer de entrada
 increment \%x                   ; Conteo de segundos
 input 1 {CONNECT }
 if success goto sllogin
 reinput 1 {NO CARRIER\13\10}
 if success goto sldial
 reinput 1 {NO DIALTONE\13\10}
 if success goto slnodial
 reinput 1 {\255}
 if success goto slhup
 reinput 1 {\127}
 if success goto slhup
 if < \%x 60 goto look
 else goto slhup

 :sllogin                        ; login
 assign \%x 0                    ; asignar cero al contador
 pause 1
 echo Looking for login prompt.

 :slloop
 increment \%x                   ; Conteo de segundos
 clear                           ; Limpieza del buffer de entrada
 output \13
 ;
 ; escriba su login prompt aqui:
 ;
 input 1 {Username: }
 if success goto sluid
 reinput 1 {\255}
 if success goto slhup
 reinput 1 {\127}
 if success goto slhup
 if < \%x 10 goto slloop         ; intentar 10 veces para obtener un login
 else goto slhup                 ; colgar y empezar de nuevo si a la decima falla

 :sluid
 ;
 ; escriba su nombre de usuario:
 ;
 output ppp-login\13
 input 1 {Password: }
 ;
 ; escriba su contrasena:
 ;
 output ppp-password\13
 input 1 {Entering SLIP mode.}
 echo
 quit

 :slnodial
 echo \7No dialtone.  Check the telephone line!\7
 exit 1

 ; local variables:
 ; mode: csh
 ; comment-start: "; "
 ; comment-start-skip: "; "
 ; end:

25.4. Uso de PPP sobre Ethernet (PPPoE)

   Contribuido (tomado de
   http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) por Jim Mock.

   En esta seccion veremos como configurar PPP sobre una red Ethernet
   (PPPoE).

  25.4.1. Configurando el kernel

   Ya no es necesario realizar una configuracion especial para que nuestro
   kernel cuente con soporte para PPPoE. Siempre y cuando el soporte de redes
   necesario se encuentre en el, ppp se encargara de cargarlo de una manera
   dinamica.

  25.4.2. Editando el fichero ppp.conf

   He aqui un ejemplo de un fichero de configuracion ppp.conf completamente
   funcional:

 default:
   set log Phase tun command # puede anadir mas dispositivos si lo desea
   set ifaddr 10.0.0.1/0 10.0.0.2/0

 nombre_del_proveedor_del_servicio_de_internet:
   set device PPPoE:xl1 # sustituya xl1 con su dispositivo ethernet
   set authname SuNombreDeUsuario
   set authkey SuContrasena
   set dial
   set login
   add default HISADDR

  25.4.3. Ejecutando PPP

   Estando en modo superusuario (root) puede ejecutar:

 # ppp -ddial nombre_del_proveedor_de_inet

  25.4.4. Ejecutando PPP al inicio de sesion

   Anada las siguientes lineas a su archivo /etc/rc.conf:

 ppp_enable="YES"
 ppp_mode="ddial"
 ppp_nat="YES"   # siempre y cuando desee habilitar nat para su red local
 ppp_profile="nombre_del_proveedor_de_inet"

  25.4.5. Diferenciando el uso del Servicio de PPPoE

   En ocasiones es necesario utilizar una pequena marca para diferenciar el
   servicio que vamos a utilizar para establecer la conexion. Las marcas
   ("tags")de servicio son utilizadas para distinguir entre diferentes
   servidores de una red, a los que nos podemos conectar utilizando PPPoE.

   Su proveedor de internet debe haberle provisto de la informacion necesaria
   para crear esta marca. Si esto no fue asi, puede solicitar a su proveedor
   que le brinde esta informacion.

   Como ultimo recurso, puede intentar el metodo sugerido por el programa
   Roarging Penguin PPPoE, que puede encontrarse en la coleccion de ports. Al
   utilizar este programa debe tener en mente, que este puede desconfigurar
   su modem por completo, por esta razon piense biena antes de utilizarlo.
   Simplemente instale el programa controlador del modem, provisto por su
   porveedor. Posteriormente, debe acceder al menu de Sistema del programa.
   El nombre de su perfil debe aparecer listado. Que normalmente es ISP.

   El nombre del perfil (marca del servicio) sera utilizada por la
   configuracion de PPPoE en el fichero de configuracion ppp.conf como el
   proveedor para la opcion del comando set device (puede ver la pagina de
   ayuda ppp(8) para mas detalles). Esto debe verse algo similar a lo
   siguiente:

 set device PPPoE:xl1:ISP

   No olvide cambiar x11 por el dispositivo Ethernet que este utilizando.

   No olvide cambiar ISP por el nombre del perfil que le fue descrito
   anteriormente (por lo general el nombre de su Proveedor de Servicio de
   Internet).

   Para informacion adicional consulte:

     * Cheaper Broadband with FreeBSD on DSL por Renauld Waldura.

  25.4.6. Uso de PPPoE en Casa con un Modem Dual ADSL 3Com

   Este modem no sigue el estandar establecido en el RFC 2516 (Un metodo que
   describe el uso de PPP por medio de un dispositivo Ethernet (PPoE),
   escrito por L. Mamakos, K. Lidl, J. Evarts, D. Carrel, D. Simone y R.
   Wheeler). En su lugar, el codigo de diferentes tipos de paquetes ha sido
   utilizado para el manejo del entorno Ethernet. Si cree que esto es
   incorrecto y que se debiera ajustar a las especificaciones de PPPoE, por
   favor comentelo en 3Com.

   Para poder hacer que FreeBSD sea capaz de comunicarse con este
   dispositivo, se debe establecer un control de sistema (sysctl). Esto puede
   hacerse de forma automatica al momento del arranque, editando el fichero
   /etc/sysctl.conf:

 net.graph.nonstandard_pppoe=1

   o bien pude hacerse desde la linea de comandos, para un efecto inmediato,
   por medio del comando sysctl -w net.graph.nonstandard_pppoe=1.

   Desafortunadamente y dado que esto implica una configuracion general del
   sistema, por lo que no es posible comunicarnos con un dispositivo cliente
   - servidor que utilice PPPoE y con un modem casero 3Com ADSL, al mismo
   tiempo.

25.5. Uso de PPP sobre ATM (PPPoA)

   Lo siguiente describe como configurar PPP utilizando ATM, alias PPPoA.
   PPPoA es una alternativa muy comun entre proveedores de DSL en Europa.

  25.5.1. Uso de PPPoA con un Alcatel Speedtouch USB

   El soporte bajo FreeBSD para este dispositivo se puede encontrar como un
   port, por que el firmware es distribuido bajo la licencia de Alcatel.

   Para instalar este software, simplemente utilice la coleccion de ports.
   Instale el port net/pppoa y siga las instrucciones provistas por el port.

  25.5.2. Uso de mpd

   Puede usar mpd para conectarse a una gran variedad de servicios, en
   particular servicios pptp. Puede encontrar mpd en la coleccion de ports,
   bajo net/mpd.

   Primero debe instalar el port, y posteriormente configurar mpd para que se
   ajuste a sus necesidades y a la configuracion del proveedor. El port
   instala un conjunto de ficheros de configuracion de ejemplo, que estan
   bien documentados en PREFIX/etc/mpd/. Note que PREFIX se refiere al
   directorio donde sus ports son instalados, que normalmente es en
   /usr/local. Una guia completa en formato HTML, esta disponible una vez que
   se ha instalado el port. Esta se localiza en PREFIX/share/mpd/. Aqui
   tenemos un ejemplo simple de configuracion para conectarse a un servicio
   ADSL con mpd. La configuracion se divide en dos ficheros, primero tenemos
   el fichero mpd.conf.

 default:
      load adsl

  adsl:
      new -i ng0 adsl adsl
      set bundle authname usuario 1
      set bundle password contrasena 2
      set bundle disable multilink

      set link no pap actcomp protocomp
      set link disable chap
      set link accept chap
      set link keep-alive 30 10

      set ipcp no vjcomp
      set ipcp ranges 0.0.0.0/0 0.0.0.0/0

      set iface route default
      set iface disable on-demand
      set iface enable proxy-arp
      set iface idle 0

      open

   1   El nombre de usuario para autentificar con su proveedor.  
   2   La contrasena para autentificar con su proveedor.         

   El fichero mpd.links contiene informacion a cerca de la, o las
   conecciones, que desee establecer. Un ejemplo de mpd.links y que sea
   acompanante del ejemplo anterior, se muestra a continuacion.

 adsl:
      set link type pptp
      set pptp mode active
      set pptp enable originate incoming outcall
      set pptp self 10.0.0.140
      set pptp peer 10.0.0.138

   La conexion es facil de inicializarla, al ingresar los siguientes comandos
   como root.

 # mpd -b adsl

   El estatus de la conexion la puede ver con el comando.

 % ifconfig ng0
  : flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
       inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff

   Usar mpd es la forma recomendada para conectarse con servicios ADSL con
   FreeBSD.

  25.5.3. Uso de pptpclient

   Tambien es posible usar FreeBSD para conectarse a otros servicios PPPoA
   por medio de net/pptpclient.

   Para conectarse por medio de net/pptpclient a un servicio DSL, instale el
   port o paquete y edite el fichero /etc/ppp/ppp.conf. Debe ser root para
   hacer estas operaciones. Un ejemplo de la seccion de ppp.conf, se muestra
   a continuacion. Para mayor informacion sobre las opciones de ppp.conf,
   consulte la pagina de ayuda de ppp; ppp(8).

 adsl:
   set log phase chat lcp ipcp ccp tun command
   set timeout 0
   enable dns
   set authname usuario 1
   set authkey contrasena 2
   set ifaddr 0 0
   add default HISADDR

   1   Nombre de usuario de la cuenta DSL.  
   2   La contrasena de su cuenta.          

  Aviso:

   Debido a que debe poner su contrasena en el fichero ppp.conf en texto
   plano, debe asegurarse que nadie tenga acceso de lectura a este fichero.
   Los siguientes comandos se aseguran de que el fichero solo pueda se leido
   por root. Ve las paginas de ayuda chmod(1) y chown(8) para mayor
   informacion.

 # chown root:wheel /etc/ppp/ppp.conf
  # chmod 600 /etc/ppp/ppp.conf

   Esto abrira una sesion por medio de PPP con su ruteador DSL. Los modems
   Ethernet DSL cuentan con una direccion IP de LAN preconfigurada a la cual
   se puede conectar. En el caso del Alcatel Speedtouch, esta direccion es
   10.0.0.138. La documentacion de su equipo debe indicarle que direccion
   utiliza. Para abrir el "tunel" e iniciar la sesion ppp, ejecute el
   siguiente comando.

 # pptp direccion proveedor

  Sugerencia:

   Puede anadir un simbolo de ampersand ("&") al final de este comando, ya
   que pptp no retorna al shell por default.

   Un dispositivo virtual tun sera creado, para interactuar con los procesos
   de pptp y ppp. Una vez que regrese al shell puede examinar la conexion por
   medio del siguiente comando.

 % ifconfig tun0
  tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
          inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00
          Opened by PID 918

   Si no le es posible conectarse, verifique la configuracion de su ruteador,
   que normalmente es accesible por medio de telnet o de su navegador web. Si
   aun no puede conectarse examine la salida que da el comando pptp y el
   contenido del fichero de registro (log) de ppp; /var/log/ppp.log.

25.6. Uso de SLIP

   Contribucion Original por Satoshi Asami.
   Con comentarios por Guy Helmer y Piero Serini.

  25.6.1. Configurando un cliente SLIP

   Lo siguiente es una forma de configurar FreeBSD para que utilice SLIP, en
   un red con direccion estatica. Para direcciones dinamicas (esto es, donde
   su direccion cambia cada vez que se conecta), probablemente sea necesario
   realizar algunos ajustes que complican la configuracion.

   En primer termino, es necesario determinar a que puerto serial esta
   conectado nuestro modem. Mucha gente opta por} contar con un enlace
   simbolico, tal como /dev//modem, que apunta al nombre real del
   dispositivo, /dev/cuaaN. Esto permite abstenerse de usar el nombre real
   del dispositivo, en caso de que sea necesario cambiar de puerto nuestro
   modem. Lo cual puede ser de mucha ayuda, ya que puede ser un fastidio
   tener que editar un monton de ficheros en /etc y ficheros de tipo .kermrc
   en todo el sistema!.

  Nota:

   /dev/cuaa0 es COM1, cuaa1 es COM2, etc.

   Asegurese de contar con la siguiente opcion en la configuracion de su
   kernel:

 pseudo-device   sl      1

   Esta opcion esta incluida en el archivo del kernel GENERIC, asi que no
   debe haber problema, claro esta, a menos que lo haya borrado
   intencionalmente.

    25.6.1.1. Cosas Que Tiene Que Hacer Solo Una Vez

    1. Anada el nombre de su maquina, gateway, servidores de nombre a su
       fichero /etc/hosts. Este es un ejemplo de mi fichero:

 127.0.0.1               localhost loghost
 136.152.64.181          water.CS.Example.EDU water.CS water
 136.152.64.1            inr-3.CS.Example.EDU inr-3 slip-gateway
 128.32.136.9            ns1.Example.EDU ns1
 128.32.136.12           ns2.Example.EDU ns2

    2. Asegurese de que cuenta con la opcion hosts antes de la opcion bind,
       en su fichero /etc/host.conf. De lo contrario pueden ocurrir cosas
       graciosas en su sistema.

    3. Edite el fichero /etc/rc.conf.

         1. Especifique su nombre host al editar la linea que dice:

 hostname="minombre.mi.dominio"

            El nombre completo de su sistema para internet, debe ser escrito
            en este punto.

         2. Anada el dispositivo sl0 a la lista de dispositivos de red, al
            cambiar la linea que dice:

 network_interfaces="lo0"

            a quedar:

 network_interfaces="lo0 sl0"

         3. Anada los parametros de inicializacion del dispositivo sl0, al
            anadir la linea:

 ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"

         4. Especificque cual sera su ruteador por omision al editar la
            linea:

 defaultrouter="NO"

            a quedar:

 defaultrouter="slip-gateway"

    4. Edite su fichero /etc/resolv.conf (si no existe debe crearlo), a que
       contenga lo siguiente:

 domain CS.Ejemplo.EDU
 nameserver 128.32.136.9
 nameserver 128.32.136.12

       Como puede ver, lo anterior define el nombre de host, de su servidor
       de nombres. Claro esta, el nombre de dominio y las direcciones IP,
       dependen de su sistema especifico.

    5. Establezca la contrasena del superusuario root y de su simil toor (y
       de cualquier otro usuario que aun no cuente con la misma).

    6. Reinicie su sistema y asegurese que cuenta con el nombre de host
       (hostname) correcto.

    25.6.1.2. Haciendo una Conexion con SLIP

    1. Marque el numero, teclee en el signo de comando slip, ingrese el
       nombre y la contrasena. Lo que se requiere ingresar, depende de su
       sistema. Si utiliza kermit, puede utilizar un script similar al
       siguiente:

 # kermit setup
 set modem hayes
 set line /dev/modem
 set speed 115200
 set parity none
 set flow rts/cts
 set terminal bytesize 8
 set file type binary
 # El siguiente macro se encarga de llamar e ingresar al sistema
 define slip dial 643-9600, input 10 =>, if failure stop, -
 output slip\x0d, input 10 Username:, if failure stop, -
 output silvia\x0d, input 10 Password:, if failure stop, -
 output ***\x0d, echo \x0aCONNECTED\x0a

       Claro esta, que debe cambiar el nombre y contrasen a quedar de acuerdo
       a sus necesidades. Despues de hacer esto, puede simplemente teclear
       slip en el simbolo de sistema (prompt) de kermit, para realizar la
       conexion.

  Nota:

       El dejar su contrasena en texto plano, en cualquier parte del sistema,
       generalmente es una mala idea. Hagalo bajo su propio riesgo.

    2. Deje a kermit en ese punto trabajando (puede suspenderlo tecleando
       Ctrl+z) y como root, teclee:

 # slattach -h -c -s 115200 /dev/modem

       Si puede hacer ping a cualquier host que se encuentre del otro lado
       del ruteador, usted esta conectado!. Si esto no funciona, puede
       intentar como argumento del comando slattach, la opcion -a en lugar de
       utilizar la optcion -c.

    25.6.1.3. Como Terminar la Conexion

   Para terminar la conexion haga lo siguiente:

 # kill -INT `cat /var/run/slattach.modem.pid`

   esto terminaraa slattach. Recuerde que para hacer esto, usted debe estar
   firmado como superusuario (root). Posteriormente dirijase a kermit (puede
   hacer esto con fg si lo envio a segundo plano) y salga (tecleando q).

   La pagina de ayuda de slattach indica que debe utilizar el comando
   ifconfig sl0 down, para marcar como terminado el uso del dispositivo, pero
   tal parece que esto no hace una gran diferencia para mi. (ifconfig sl0 da
   el mismo resultado.)

   En algunas ocasiones, puede que su modem se niegue a cortar la
   comunicacion (el mio lo hace a veces). Si ese es el caso, simplemente
   inicie de nuevo kermit y vuelva a salir. Normalmente en el segundo intento
   hay exito.

    25.6.1.4. Problemas Comunes

   Si esto no funciona, sientase libre de preguntarme. Lo siguiente es una
   recapitulacion de los problemas que mas comunmente se presentan:

     * El no utilizar la opcion -c o -a con el comando slattach (Esto debiera
       se fatal, pero algunos usuarios han reportado que esto ha solucionado
       sus problemas.

     * Usar la opcion s10 en vez de usar la opcion sl0 (puede ser dificil ver
       la diferencia con algunos tipos de letras).

     * Intente ifconfig sl0 para visualizar el estatus de sus dispositivos de
       red. Por ejemplo, puede ser que obtenga algo similiar a lo siguiente:

 # ifconfig sl0
 sl0: flags=10<POINTOPOINT>
         inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00

     * Tambien el comando netstat -r le mostrara la tabla de ruteo, en caso
       de que obtenga el mensaje "no route to te host", al hacer ping. Un
       ejemplo de esto se muestra a continuacion:

 # netstat -r
 Routing tables
 Destination      Gateway            Flags     Refs     Use  IfaceMTU    Rtt    Netmasks:

 (root node)
 (root node)

 Route Tree for Protocol Family inet:
 (root node) =>
 default          inr-3.Example.EDU  UG          8   224515  sl0 -      -
 localhost.Exampl localhost.Example. UH          5    42127  lo0 -       0.438
 inr-3.Example.ED water.CS.Example.E UH          1        0  sl0 -      -
 water.CS.Example localhost.Example. UGH        34 47641234  lo0 -       0.438
 (root node)

       Esto es despues de que el sistema ha estado conectado por un tiempo.
       Los numeros pueden variar en su sistema.

  25.6.2. Estableciendo un Servidor SLIP

   Este documento provee sugerencias, para establecer un servidor de SLIP,
   bajo FreeBSD, lo que generalmente significa configurar su sistema, para
   que de manera automatica inicie los servicios, al firmarse
   usuarios-clientes remotos en su sistema.

    25.6.2.1. Prerequisitos

   Esta seccion es de naturaleza muy tecnica, asi que contar con antecedentes
   sobre esto es requerido. Este documento supone que usted cuenta con
   conocimientos sobre el protocolo de redes TCP/IP, y particularmente, redes
   y direcciones de nodos, mascaras de red, subneteo, ruteo y protocolos de
   ruteo, tal como RIP. El configurar servicios SLIP, en un servidor,
   requiere un conocimiento de estos conceptos, y si usted no esta
   familiarizado con estos, puede leer una copia, ya sea del libro de Craig
   Hunt; TCP/IP Networking Administration, publicado por O'Reilly &
   Associates, Inc. (Numero ISBN 0-937175-82-X), o alguno de los libros de
   Douglas Comer, sobre protocolos TCP/IP.

   Se da por un hecho, que usted ha instalado y configurado correctamente
   su(s) modem(s), asi como la configuracion de su sistema, para efecto de
   utilizar el mismo para realizar la conexion. Si usted no lo ha hecho, por
   favor lea el tutorial sobre configuracion de estos servicios; si cuenta
   con un navegador para la World-Wide Web, puede ver los tutoriales
   disponibles en http://www.FreeBSD.org/.

   Puede ser que tambien desee revisar las paginas de ayuda (man), sio(4)
   para informacion referente a los controladores de dispositivos de puertos
   en serie, y ttys(5), gettytab(5), getty(8), & init(8), para ver
   informacion relevante, sobre la configuracion de su sistema, para efecto
   de que acepte accesos (logins) por medio de un modem, y quizas stty(1)
   para informacion sobre los parametros de configuracion de puertos en serie
   (tal como clocal, que se utiliza para la conexion directa por medio de
   puertos seriales).

    25.6.2.2. Echemos un Vistazo

   En su configuracion tipica, el desarrollo de FreeBSD como un servidor
   SLIP, funciona de la siguiente manera: un Usuario SLIP, se conecta del
   Servidor SLIP FreeBSD e ingresa al sistema con una identificacion
   especial, que utiliza /usr/sbin/sliplogin como shell del usuario. El
   programa sliplogin busca en el fichero /etc/sliphome/slip.hosts la linea
   que haya sido creada especialmente para el usuario, conecta la linea
   serial a una interfaz SLIP disponible y posteriormente ejecuta el script
   /etc/sliphome/slip.login, para configurar la interfaz SLIP.

      25.6.2.2.1. Un Ejemplo de Acceso al Servidor SLIP

   Por ejemplo si la clave de acceso de un usuario SLIP fuese Shelmerg, la
   entrada del usuario Shelmerg, en el fichero /etc/master.passwd se vera
   algo similar a lo siguiente:

 Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin

   Cuando Shelmerg accese al sistema, el comando sliplogin, buscara en el
   fichero /etc/sliphome/slip.hosts, una linea, en la cual el ID
   (identificacion) del usuario coincida, por ejemplo, puede ser que en el
   fichero /etc/sliphome/slip.hosts exista una linea simliar a la siguiente:

 Shelmerg        dc-slip sl-helmer       0xfffffc00                autocomp

   El comando sliplogin encontrara la linea que coincida, enganchara la linea
   serial a cualquier interfaz SLIP disponible y posteriormente ejecutara
   /etc/sliphome/slip.login de manera similar a:

 /etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp

   Si todo marcha bien, /etc/sliphome/slip.login creara una configuracion,
   por medio de ifconfig, para la interfaz SLIP, a la cual sliplogin se ha
   adjuntado (la interfaz slip 0, que era el primer parametro dado en la
   lista de slip.login), para establecer la direccion local IP (dc-slip), la
   interfaz de la direcion IP Remota (sl-helmer), la submascara de red para
   la interfaz SLIP (0xfffffc00) y cualquier otra opcion adicional
   (autocomp). Si algo no va del todo bien, normalmente sliplogin guarda
   bastante informacion para depurar, por medio del demonio (daemon) syslog,
   que usualmente guarda dicha infomracion en /var/log/messages (vea la
   pagina de ayuda syslogd(8) asi como syslog.conf(5) y quizas el fichero
   /etc/syslog.conf, para ver que es lo que syslogd esta almacenando y donde
   es que lo almacena.

   OK, basta de ejemplos - entremos de lleno en la configuracion del sistema.

    25.6.2.3. Configuracion del Kernel

   El kernel de FreeBSD, por omision, cuenta con 2 dispositivos SLIP
   definidos (sl0 y sl1); usted puede utilizar netstat -i, para verificar si
   estos dispositivos se encuentran en el kernel de su sistema.

   Un ejemplo del resultado de netstat -i:

 Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll
 ed0   1500  <Link>0.0.c0.2c.5f.4a         291311     0   174209     0   133
 ed0   1500  138.247.224 ivory             291311     0   174209     0   133
 lo0   65535 <Link>                            79     0       79     0     0
 lo0   65535 loop        localhost             79     0       79     0     0
 sl0*  296   <Link>                             0     0        0     0     0
 sl1*  296   <Link>                             0     0        0     0     0

   En este ejemplo vemos que existen dos dispositivos SLIP en el kernel, que
   son; sl0 y sl1 (el asterisco que aparece despues de sl0 y sl1 indica que
   los dispositivos no estan "trabajando".)

   Aun cuando el kernel cuente con los dispositivos, por omision el kernel de
   FreeBSD, no viene configurado para enviar paquetes (de hecho su sistema
   FreeBSD no trabajara como ruteador, por default) esto en base a los
   requerimientos para Internet, establecidos por los RFCs ( vea 1009
   [Requerimentos para Pasarelas (Gateway) en Internet], 1122 [Requerimientos
   para hosts de Internet - Capas de comunicacion] y quizas 1127 [RFC sobre
   Una Perspectiva de los Requerimientos de Hosts]). Si usted desea que su
   servidor SLIP sobre FreeBSD, opere como un ruteador, sera necesario que
   edite el fichero /etc/rc.conf y cambie la opcion gateway_enable, a quedar
   YES, esto habilitara esta funcion.

   Sera necesario que reinicie su sistema, para efecto de que estos cambios
   surtan efecto.

   Al verificar su fichero de configuracion del kernel
   (/sys/i386/conf/GENERIC), podra notar que cerca del final, hay una linea
   como la siguiente:

 pseudo-device sl 2

   Esta linea es la que define el numero de dispositivos SLIP disponibles en
   el kernel; el numero al final de la linea es el numero maximo de
   conecciones SLIP que puede manejar el servidor simultaneamente.

   Para ayuda con relacion a la configuracion y compilacion del kernel en su
   sistema FreeBSD, por favor refierase Capitulo 8, Configuracion del kernel
   de FreeBSD al apartado correspondiente.

    25.6.2.4. Configuracion de Sliplogin

   Como se menciono anteriormente, existen tres ficheros en el directorio
   /etc/sliphome, que son parte de la configuracion de /usr/sbin/sliplogin
   (vea la pagina de ayuda sliplogin(8) de para ver la ayuda del comando
   sliplogin): slip.hosts, que es el fichero que define a los usuarios SLIP,
   asi como sus direcciones IP correspondientes; slip.login, que normalmente
   es utilizado para configurar la interfaz de SLIP; y (opcionalmente)
   slip.logout, que hace lo opuesto a slip.login, cuando la conexion serial
   ha terminado.

      25.6.2.4.1. Configuracio de slip.hosts

   El fichero /etc/sliphome/slip.hosts contiene lineas, que al menos cuentan
   con cuatro partes, separadas por espacios en blanco:

     * Identificador (nombre) del usuario SLIP

     * Direccion Local (local para el servidor SLIP) de la liga a SLIP

     * Direccion Remota de la liga a SLIP

     * Mascara de red

   Las direcciones local y remota, pueden ser nombres del host (la resolucion
   de los mismos, es llevada a cabo, por medio de /etc/hosts o por el
   servidor de nombres de dominio (DNS), dependiendo de lo que haya
   especificado en el fichero /etc/host.conf), y la mascara de red puede ser
   un nombre, que puede ser resuelto revisando /etc/networks. En un sistema
   de ejemplo, el fichero /etc/sliphome/slip.hosts, puede verse asi:

 #
 # login local-addr      remote-addr     mask            opt1    opt2
 #                                               (normal,compress,noicmp)
 #
 Shelmerg  dc-slip       sl-helmerg      0xfffffc00      autocomp

   Al final de la linea puede ver que existen una o mas opciones.

     * normal - sin compresion de los encabezados.

     * compress - compresion de los encabezados.

     * autocomp - compresion automatica, si el host remoto lo permite.

     * noicmp - deshabilitar los paquetes ICMP (de tal forma que cualquier
       paquete enviado por "ping" seraa rechazado, en lugar de ocupar de su
       ancho de banda).

   La eleccion sobre la direccion local y remota depende si usted va a
   utilizar una conexion TCP/IP dedicada o bien si va a utilizar una conexion
   por medio de "proxy ARP" en su servidor SLIP (no es correcto "proxy ARP",
   pero es la terminologia utilizada en esta seccion para describirlo). Si
   usted no esta seguro que metodo manejar o como asignar la direccion IP,
   por favor refierase a alguno de los libros sobre TCP/IP, que se mencionan
   en los Prerequisitos de SLIP (Seccion 25.6.2.1, "Prerequisitos") y/o
   consulte al administrador de IP de su red.

   Si usted piensa subnetear para los diferentes clientes SLIP, sera
   necesario que la direccion de la subred (subnet), salga de la direccion IP
   que tenga asignada su red, y el numero de cada cliente, del numero que
   asigne a su subred. Posteriormente puede que sea necesario, o bien
   configurar una ruta estatica a la subred SLIP, por medio de su servidor
   SLIP en su ruteador mas cercano por IP.

   De otra forma, si usted piensa utilizar un metodo "proxy ARP", sera
   necesario que a sus clientes SLIP, se les asigne una direccion IP, que se
   encuentre dentro del rango que este utilizando para su subred Ethernet, y
   tambie sera necesario que haga algunos ajustes en los ficheros script
   /etc/sliphome/slip.login y en /etc/sliphome/slip.logout, para que usen
   arp(8), para que maneje la tabla ARP del servidor SLIP y llamados del
   proxy-ARP.

      25.6.2.4.2. slip.login Configuracion

   El tipico fichero /etc/sliphome/slip.login se ve de la siguiente manera:

 #!/bin/sh -
 #
 #       @(#)slip.login  5.1 (Berkeley) 7/1/90

 #
 # generic login file for a slip line.  sliplogin invokes this with
 # the parameters:
 #      1        2         3        4          5         6     7-n
 #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
 #
 /sbin/ifconfig sl$1 inet $4 $5 netmask $6

   This slip.login file merely runs ifconfig for the appropriate SLIP
   interface with the local and remote addresses and network mask of the SLIP
   interface.

   If you have decided to use the "proxy ARP" method (instead of using a
   separate subnet for your SLIP clients), your /etc/sliphome/slip.login file
   will need to look something like this:

 #!/bin/sh -
 #
 #       @(#)slip.login  5.1 (Berkeley) 7/1/90

 #
 # generic login file for a slip line.  sliplogin invokes this with
 # the parameters:
 #      1        2         3        4          5         6     7-n
 #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
 #
 /sbin/ifconfig sl$1 inet $4 $5 netmask $6
 # Answer ARP requests for the SLIP client with our Ethernet addr
 /usr/sbin/arp -s $5 00:11:22:33:44:55 pub

   La linea adicional, arp -s $5 00:11:22:33:44:55 pub del script slip.login,
   crea una entrada ARP en la tabla del servidor SLIP. Esta entrada le indica
   al servidor SLIP que debe responder con la direccion MAC de su dispositivo
   Ethernet, cuando cualquier otro nodo IP en la red, solicite informacion a
   la IP del cliente SLIP.

   Al tomar en cuenta el ejemplo anterior, es importante que sustituya la
   direccion Ethernet MAC (00:11:22:33:44:55), con la direccion que
   corresponde a su tarjeta de red, o definitivamente su "proxy ARP" no va a
   funcionar!. Para efecto de conocer cual es la direccion MAC del
   dispositivo Ethernet (tarjeta de red), de su servidor SLIP, puede ejecutar
   el comando netstat -i, el cual tendra como resultado algo similar a lo
   siguiente:

 ed0   1500  <Link>0.2.c1.28.5f.4a         191923        0   129457     0   116

   Esto indica que la direccion MAC de su dispositivo Ethernet, en este
   sistema es 00:02:c1:28:5f:4a - los puntos que aparecen en la salida del
   comando netstat -i deben cambiarse por dos puntos, asi mismo debera de
   anteponerse un cero, a cada digito hexadecimal que aparezca solo (no en
   pares), de tal forma que convirtamos la direccion en lo que arp(8)
   requiere para trabajar; vea la pagina de ayuda arp(8), para ver
   informacion completa sobre su uso.

  Nota:

   Recuerde que cuando cree los ficheros /etc/sliphome/slip.login y
   /etc/sliphome/slip.logout, deben contar con permisos de ejecucion (chmod
   755 /etc/sliphome/slip.login /etc/sliphome/slip.logout), de otra forma
   estos scripts no podran llevar a cabo su funcion.

      25.6.2.4.3. Configuracion de slip.logout

   El fichero /etc/sliphome/slip.logout no es indispensable (a menos que vaya
   a utilizar "proxy ARP"), pero si aun asi decide crearlo, el siguiente es
   un ejemplo basico del script slip.logout :

 #!/bin/sh -
 #
 #       slip.logout

 #
 # logout file for a slip line.  sliplogin invokes this with
 # the parameters:
 #      1        2         3        4          5         6     7-n
 #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
 #
 /sbin/ifconfig sl$1 down

   Si usted esta utilizando "proxy ARP", es recomendable que le indique a
   /etc/sliphome/slip.logout, que desea eliminar la entrada ARP, para el
   cliente SLIP:

 #!/bin/sh -
 #
 #       @(#)slip.logout

 #
 # logout file for a slip line.  sliplogin invokes this with
 # the parameters:
 #      1        2         3        4          5         6     7-n
 #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
 #
 /sbin/ifconfig sl$1 down
 # Dejar de solicitar respuesta ARP al cliente SLIP
 /usr/sbin/arp -d $5

   El comando arp -d $5, elimina la entrada ARP, que slip.login de "proxy
   ARP" anadio al cliente SLIP al ingresar al sistema.

   Para esta mas seguros: asegurese de que el fichero
   /etc/sliphome/slip.logout cuenta con los permisos adecuados para su
   ejecucion, una vez que lo ha creado (ej. chmod 755
   /etc/sliphome/slip.logout) .

    25.6.2.5. Consideraciones sobre el Enrutamiento

   Si usted no esta utilizando el metodo "proxy ARP", para efecto de rutear
   los paquetes entre sus clientes SLIP y el resto de la red (y quizas
   Internet), debera de hacer una de las siguientes dos acciones, o bien
   anadir direcciones estaticas, a su(s) ruteador(es) mas cercanos, para que
   se reenvien los paquetes de la subred de sus clientes SLIP, por medio de
   su servidor SLIP, o bien tendra que instalar y configurar gated en su
   servidor SLIP (que corre FreeBSD!), de tal forma que le indique a su(s)
   ruteador(es), por medio del protocolo correcto, a cerca de su subred SLIP.

      25.6.2.5.1. Direcciones de Enrutamiento Estaticas

   Anadir direcciones estaticas de enrutamiento puede ser un problema (o
   imposible si usted no cuenta con la autoridad para hacerlo...). Si usted
   cuenta con una red de ruteo-multiple en su organizacion, algunos
   ruteadores, tales como los fabricados por Cisco y Proteon, puede ser que
   no sea suficiente con el hecho de configurar las rutas estaticas de su
   subred SLIP, sino que sea necesario indicar que rutas utilizar para
   informar a cerca de otras rutas, asi que algo de experiencia asi como
   determinacion para la resolucion de problemas seran necesarias para poner
   la ruta basada-en- ruteo-estatico a trabajar.

      25.6.2.5.2. Ejecutando gated

   Una alternativa para los dolores de cabeza que pueden dar las redes con
   ruteo estatico, es intalar gated en su servidor SLIP bajo FreeBSD y
   configurarlo, para que utilice los protocolos de ruteo apropiados
   (RIP/OSPF/BGP/EGP) para informar a otros ruteadores, a cerca de su subred
   SLIP. Una vez que lo ha compilado e instalado, debera crear el fichero
   /etc/gated.conf, que configurara a gated; aqui hay un ejemplo, similar al
   que el autor utilizo en un servidor SLIP FreeBSD:

  Nota:

   gated es un software propietario y su codigo fuente no estara disponible
   al publico mas (mas informacion en el sitio gated). Esta seccion solo
   existe para asegurarse de la compatibilidad con aquellos que usan la
   versio antigua.

 #
 # gated configuration file for dc.dsu.edu; for gated version 3.5alpha5
 # Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
 #
 #
 # tracing options
 #
 traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;

 rip yes {
   interface sl noripout noripin ;
   interface ed ripin ripout version 1 ;
   traceoptions route ;
 } ;

 #
 # Turn on a bunch of tracing info for the interface to the kernel:
 kernel {
   traceoptions remnants request routes info interface ;
 } ;

 #
 # Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP
 #

 export proto rip interface ed {
   proto direct {
       xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections
   } ;
 } ;

 #
 # Accept routes from RIP via ed Ethernet interfaces

 import proto rip interface ed {
   all ;
 } ;

   En el ejemplo anterior, el fichero de configuracion gated.conf transmite
   informacion sobre la subred SLIP xxx.xxx.yy, por medio de RIP al
   dispositivo Ethernet; si usted esta utilizando un dispositivo de red,
   diferente de ed, sera necesario que modifique el parametro ed por el
   correspondiente. En este ejemplo, el fichero tambien realiza una busqueda
   por el fichero /var/tmp/gated.output, que es un fichero que nos sirve para
   depurar cualquier error que se presente en la actividad de gated; usted
   puede desactivar la opcion de depuracion (debug), si es que gated esta
   funcionando correctamente. Sera necesario que modifique xxx.xxx.yy., a
   quedar con la direccion correcta de su subred SLIP (asegurese de modificar
   tambien la mascara de red, en la clausula proto direct tambien).

   Una vez que ha instalado y configurado gated en su sistema, necesitara
   indicarle a FreeBSD que al iniciar el sistema, ejecute el script para
   gated, en lugar de ejecutar routed. La forma mas facil de hacer esto, es
   editar las variables de route y router_flags, en el fichero /etc/rc.conf.
   Por favor vea la pagina de ayuda de gated, para ver informacion sobre los
   parametros de la linea-de-comandos.

Capitulo 26. Cortafuegos

   Texto de Joseph J. Barbish.
   Convertido a SGML y actualizado por Brad Davis.
   Tabla de contenidos

   26.1. *

26.1. *

   Pendiente de traduccion

Capitulo 27. Correo Electronico

   Escrito por Bill Lloyd.
   Reescrito por Jim Mock.
   Tabla de contenidos

   27.1. Sinopsis

   27.2. Utilizacion del correo electronico

   27.3. Configuracion de sendmail

   27.4. Sustitucion del Agente de Transferencia de Correo

   27.5. Depuracion de Problemas

   27.6. Conceptos Avanzados

   27.7. SMTP con UUCP

   27.8. Configuracion para solamente enviar correo

   27.9. Utilizacion del correo con una conexion mediante modem analogico
   (dial-up)

   27.10. Autentificacion utilizando SMTP

   27.11. Agente de Correo de Usuario

   27.12. Manejo de fetchmail

   27.13. Uso de procmail

27.1. Sinopsis

   El "Correo Electronico", o "email", es una de las formas de comunicacion
   mas usadas hoy en dia. Este capitulo es una introduccion basica de como
   poner en marcha un servidor de correo en FreeBSD, aunque no es una guia
   completa y se han omitido muchos conceptos importantes. Si se necesita
   informacion exhaustiva sobre el tema puede recurrirse a los libros
   listados en Capitulo 31, Bibliografia.

   Despues de leer este capitulo usted sabra:

     * Que software esta involucrado en el envio y recepcion de correo
       electronico.

     * Donde se encuentran en FreeBSD los ficheros basicos de configuracion
       de sendmail.

     * Como bloquear a los "spammers" y evitar el uso no autorizado de su
       servidor de correo.

     * Como instalar y configurar agentes de transferencia de correo (MTA) en
       su sistema, para reemplazar sendmail.

     * Como resolver problemas comunes en servidores de correo.

     * Como usar SMTP con UUCP.

     * Como usar correo con una conexion dialup.

     * Como configurar SMTP con autentificacion para mas seguridad.

   Antes de leer este capitulo deberia usted:

     * Configurar apropiadamente su conexion de red (Capitulo 29, Networking
       avanzado).

     * Configurar apropiadamente la informacion de DNS de su servidor de
       correo (Capitulo 29, Networking avanzado).

     * Saber como instalar software adicional (Capitulo 4, Instalacion de
       aplicaciones: <<packages>> y ports).

27.2. Utilizacion del correo electronico

   Existen varios elementos relacionados con el intercambio de correo
   electronico. A saber: El agente de usuario (Mail User Agent o MUA), El
   agente de transporte de correo (Mail Transport Agent o MTA), El DNS, Las
   carpetas de correo (Mailboxes), y por supuesto, la maquina servidora de
   correo (mail host).

  27.2.1. El Agente de Usuario

   Entre las opciones mas conocidas tenemos: mutt, pine, elm, y mail, junto
   con programas con interfaz grafica del estilo de balsa o xfmail por
   nombrar unos pocos. Tambien existen lectores de correo basados en
   navegadores web. Los programas de correo basados en navegadores web actuan
   de pasarela para las transacciones de correo electronico, entregando
   dichas transacciones al "servidor de correo" local, llamando a uno de los
   agentes de transporte de correo disponibles en la maquina local, o
   entregando dichas transacciones a un agente de transporte remoto
   utilizando el protocolo TCP.

  27.2.2. Agente de Transporte de Correo

   FreeBSD viene con sendmail por defecto, pero tambien se soportan otros
   daemones, entre los cuales se encuentran:

     * exim;

     * postfix;

     * qmail.

   El agente de transporte de correo normalmente posee dos funcionalidades,
   por un lado se responsabiliza de la recepcion y por otro se encarga de
   entregar el correo de salida. No es responsable de la recoleccion
   automatica de correo mediante la utilizacion de protocolos como POP o
   IMAP, ni se utiliza para que el usuario pueda acceder a las carpetas de
   correo locales. Para realizar estas otras tareas, se necesitan daemons
   adicionales.

  Aviso:

   Versiones antiguas de sendmail poseen varios problemas de seguridad que
   pueden facilitar a un atacante el acceso local o remoto a la maquina que
   ejecuta sendmail. Para evitar dichos problemas de seguridad se recomienda
   utilizar una version actualizada de sendmail. Tiene mas opciones a la hora
   de elegir MTA en los Ports de FreeBSD.

  27.2.3. Correo electronico y DNS

   El Sistema de Nombres de Dominio (en ingles DNS) y su correspondiente
   daemon (llamado named) constituyen una parte fundamental del procedimiento
   de entrega de correo electronico. Para entregar el correo electronico al
   destinatario adecuado el daemon servidor de correo busca el sitio remoto
   dentro del sistema de DNS.

   El DNS es la entidad responsable de asociar nombres con direcciones IP,
   pero ademas se encarga de almacenar informacion especifica relacionada con
   la entrega de correo mediante registros de tipo MX. Los registros MX (Mail
   eXchanger) especifican que maquina o maquinas estan encargadas de recibir
   correo electronico para un determinado nombre de dominio. En caso de no
   existir ningun registro MX para el dominio del destinatario, se busca
   informacion almacenada en registros de tipo A para enviar el correo al
   destino final.

   Se pueden consultar los registros MX para cualquier dominio utilizando el
   comando host(1), como se puede observar en el siguiente ejemplo:

 % host -t mx FreeBSD.org
         FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org

  27.2.4. Recepcion de correo

   La recepcion de correo electronico para su dominio se realiza mediante lo
   que se conoce como la maquina de correo (mail host). Esta maquina recoge
   todo el correo dirigido a su dominio y lo almacena en mbox (el metodo por
   defecto para el almacenamiento de correo) o en formato Maildir,
   dependiendo de la configuracion de la maquina. Una vez que el correo ha
   sido almacenado con exito se puede leer en local utilizando aplicaciones
   como mail(1) o como mutt, o de forma remota mediante un conjunto de
   protocolos tales como POP o IMAP. Esto significa que si usted va a leer el
   correo de forma local no necesita instalar ningun servidor de POP o IMAP.

    27.2.4.1. Acceso a carpetas de correo remotas mediante POP e IMAP

   Para poder acceder a carpetas de correo de forma remota se necesita tener
   acceso a un servidor de POP o IMAP. Estos protocolos permiten a los
   usuarios conectarse a sus carpetas de correo desde ubicaciones remotas de
   una forma sencilla. Aunque ambos, POP y IMAP, permiten este acceso remoto
   IMAP ofrece algunas ventajas anadidas, algunas de las cuales son:

     * El acceso mediante IMAP permite almacenar los correos en el servidor
       remoto sin necesidad de extraerlos y tener que almacenarlos en local.

     * IMAP soporta actualizaciones concurrentes.

     * IMAP resulta ser extremadamente util bajo enlaces de baja velocidad
       puesto que permite a los usuarios recuperar la estructura de los
       mensajes sin necesidad de bajarse todo el contenido. Ademas puede
       realizar tareas tales como busquedas directas en el servidor con el
       fin de minimizar la utilizacion de la red.

   Para instalar un servidor de POP o de IMAP se deben dar los siguientes
   pasos:

    1. Seleccionar el servidor IMAP o POP que mejor cumpla a sus necesidades.
       Los siguientes servidores POP e IMAP son bien conocidos y son firmes
       candidatos para ello:

          * qpopper;

          * teapop;

          * imap-uw;

          * courier-imap;

    2. Instalar el daemon POP o IMAP de su eleccion desde el arbol de
       "ports".

    3. Modifique donde sea necesario /etc/inetd.conf para que el servidor POP
       o IMAP se ejecute automaticamente.

  Aviso:

   Tenga en cuenta que tanto POP como IMAP transmiten informacion, en
   especial el usuario y la contrasena, en texto plano. Eso significa que si
   se desea seguridad en la transmision de la informacion a traves de la red
   se deben considerar mecanismos adicionales como por ejemplo el encapsulado
   de la sesion mediante ssh(1). El encapsulado de sesiones se explica en
   Seccion 14.11.8, "Tuneles SSH".

    27.2.4.2. Acceso a carpetas de correo locales

   Las carpetas de correo pueden abrirse de forma local utilizando un agente
   de correo de usuario (MUA) en el servidor donde reside la carpeta. Se
   suelen usar los programas mutt or mail(1).

  27.2.5. El Servidor de Correo (Mail Host)

   El servidor de correo es el nombre que se usa para identificar a la
   maquina responsable de la entrega y recepcion de correo electronico dentro
   de una organizacion. Esta maquina puede recibir correo de varios usuarios
   dentro de su dominio.

27.3. Configuracion de sendmail

   Contribuido por Christopher Shumway.

   sendmail(8) es el agente de transporte de correo (MTA) por defecto de
   FreeBSD. La responsabilidad de sendmail consiste en aceptar correo de
   agentes de correo de usuario (MUA) y en entregar dichos correos al agente
   de transporte de correo apropiado, segun se especifique en su archivo de
   configuracion. Sendmail tambien acepta conexiones de red provinientes de
   otros agentes de transporte y puede depositar el correo recibido en
   carpetas locales o o entregarlo a otros programas.

   sendmail utiliza los siguientes ficheros de configuracion:

   +------------------------------------------------------------------------+
   |          Filename          |                 Function                  |
   |----------------------------+-------------------------------------------|
   | /etc/mail/access           | Base de datos de accesos de sendmail      |
   |----------------------------+-------------------------------------------|
   | /etc/mail/aliases          | Carpeta de alias                          |
   |----------------------------+-------------------------------------------|
   | /etc/mail/local-host-names | Listados de maquinas para las que         |
   |                            | sendmailacepta correo                     |
   |----------------------------+-------------------------------------------|
   | /etc/mail/mailer.conf      | Configuracion del programa de correo      |
   |----------------------------+-------------------------------------------|
   | /etc/mail/mailertable      | Tabla de entregas de correo               |
   |----------------------------+-------------------------------------------|
   | /etc/mail/sendmail.cf      | Archivo de configuracion principal de     |
   |                            | sendmail                                  |
   |----------------------------+-------------------------------------------|
   | /etc/mail/virtusertable    | Usuarios virtuales y tablas de dominio    |
   +------------------------------------------------------------------------+

  27.3.1. /etc/mail/access

   La base de datos de accesos define que maquinas o direcciones IP pueden
   acceder al servidor de correo y quee clase de acceso tienen permitido. Las
   maquinas se listan junto con las opciones OK, REJECT, RELAY o simplemente
   junto con un mensaje de error que se entrega a la rutina de gestion de
   excepciones de sendmail. Las maquinas que se listan junto con la opcion
   OK, que es el valor por defecto, tienen permiso para enviar correo a la
   maquina servidora siempre y cuando la direccion de correo de destino sea
   la maquina servidora de correo. Las maquinas listadas junto con la opcion
   REJECT tienen el acceso prohibido a conexiones de correo electronico con
   el servidor. Por ultimo las maquinas que poseen la etiqueta RELAY para sus
   nombres tienen permitido enviar correo para cualquier destino a traves de
   la maquina servidora de correo.

   Ejemplo 27.1. Configuracion de la base de datos de acceso de sendmail

 cyberspammer.com                550 We don't accept mail from spammers
 FUENTE.DE.CORREO.INDISCRIMINADO@ 550 We don't accept mail from spammers
 otra.fuente.de.spam             REJECT
 okay.cyberspammer.com           OK
 128.32                          RELAY

   En el ejemplo se pueden observar cinco entradas. Los generadores de correo
   que coinciden con la parte izquierda de la tabla se ven afectados por la
   parte accion especificada en la parte derecha. Los primeros dos ejemplos
   emiten un codigo de error para la rutina de excepciones de sendmail. El
   mensaje de error se transmite a la maquina remota cuando se recibe un
   correo que coincide con la parte izquierda de la tabla. La siguiente
   entrada rechaza correo de una determinada maquina de internet,
   otra.fuente.de.spam. La siguiente entrada acepta conexiones de correo de
   la maquina okay.cyberspammer.com, lo cual es mas exacto que la linea de
   arriba de cyberspammer.com. Las coincidencias mas completas tienen
   precedencia sobre las menos especificas. La ultima entrada permite actuar
   como "relay" o pasarela de correo electronico para aquellas maquinas que
   posean una direccion IP que comience por 128.32. Estas maquinas podrian
   enviar correo destinado a otros servidores de correo utilizando el
   nuestro.

   Cuando se actualiza este fichero se debe ejecutar make dentro de
   /etc/mail/ para que se actualice la base de datos.

  27.3.2. /etc/mail/aliases

   La base de datos de alias contiene una lista de directorios virtuales que
   son traducidas a otros usuarios, ficheros, programas o incluso otros
   alias. A continuacion se muestran unos pocos ejemplos de la sintaxis que
   se puede utilizar dentro del fichero /etc/mail/aliases:

   Ejemplo 27.2. Mail Aliases

 root: usuariolocal
 ftp-bugs: joe,eric,paul
 bit.bucket:  /dev/null
 procmail: "|/usr/local/bin/procmail"

   El formato del fichero es sencillo; el nombre de la carpeta de correo que
   aparece a la izquierda de los dos puntos se traduce al/los destinos de la
   derecha. El primer ejemplo simplemente traduce la carpeta root a la
   carpeta usuariolocal, la cual se examina de nuevo utilizando la misma base
   de datos de alias, y si no existe ninguna otra coincidencia el mensaje se
   entrega al usuario local usuariolocal. En el ejemplo siguiente se muestra
   una lista de correo. Todo correo que se envia a la carpeta ftp-bugs se
   traduce en un envio para tres carpetas locales diferentes: joe, eric y
   paul. Es importante senalar que tambien se pueden especificar carpetas
   remotas mediante la forma usuario@ejemplo.com. El siguiente ejemplo
   muestra la escritura del correo a un fichero, en este caso en /dev/null.
   El ultimo ejemplo muestra el envio de correo a un programa; en este caso
   el mensaje de correo se escribe en la entrada estandar del programa
   /usr/local/bin/procmail utilizando una tuberia (o " pipe") de UNIX(R).

   Cuando se actualiza este fichero se debe ejecutar make dentro de
   /etc/mail/ para actualizar la base de datos.

  27.3.3. /etc/mail/local-host-names

   Este archivo es una lista de nombres de maquinas que sendmail(8) acepta
   como nombres locales. Se suele utilizar para escribir aquellos dominios o
   maquinas de los cuales sendmail va a recibir correo. Por ejemplo, si
   nuestro servidor de correo va a aceptar correo proveniente del dominio
   ejemplo.com y tambien de la maquina mail.ejemplo.com nuestro
   local-host-names deberia ser algo asi:

 ejemplo.com
 mail.ejemplo.com

   Cuando se actualiza este fichero sendmail(8) necesita ser reiniciado para
   que tenga en cuenta los cambios.

  27.3.4. /etc/mail/sendmail.cf

   Archivo de configuracion principal de sendmail, controla el comportamiento
   global de sendmail, incluyendo cualquier tarea desde la reescritura de
   direcciones de correo electronico hasta la devolucion de mensajes de error
   a los servidores de correo remotos. Es evidente que con un abanico tan
   diverso el fichero de configuracion acaba por ser bastante complejo y sus
   detalles quedan fuera de los objetivos de esta seccion. Afortunadamente
   este fichero raras veces necesita ser modificado, al menos en lo que
   respecta a servidores de correo estandar.

   El fichero de configuracion principal de sendmail se puede construir a
   partir de m4(1), es decir, macros que se utilizan para definir
   caracteristicas y comportamientos especificos de sendmail. Se ruega al
   lector consultar /usr/src/contrib/sendmail/cf/README para obtener mas
   detalles acerca de las distintas macros que se pueden utilizar.

   Cuando se realizan cambios a este fichero sendmail debe ser reiniciado
   para que los cambios surtan efecto.

  27.3.5. /etc/mail/virtusertable

   El fichero virtusertable asocia direcciones de correo pertenecientes a
   dominios y carpetas virtuales con carpetas reales. Estas carpetas pueden
   ser locales, remotas, alias definidos en /etc/mail/aliases o incluso
   ficheros.

   Ejemplo 27.3. Ejemplo de asociacion de correo de dominio virtual

 root@ejemplo.com                root
 postmaster@ejemplo.com          postmaster@noc.ejemplo.net
 @ejemplo.com                    joe

   En el ejemplo superior se observa una asociacion para el dominio
   ejemplo.com. Este fichero se procesa de arriba a abajo buscando la primera
   coincidencia. La primera entrada asocia root@ejemplo.com con la carpeta de
   correo local denominada root. La siguiente entrada asocia
   postmaster@ejemplo.com con la carpeta postmaster situada en la maquina
   noc.ejemplo.net. Por ultimo, si no se ha encontrado ninguna coincidencia
   para ejemplo.com se le asigna la ultima asociacion, la cual asocia
   cualquier mensaje de correo proveniente de ejemplo.com con la carpeta de
   correo local denominada joe.

27.4. Sustitucion del Agente de Transferencia de Correo

   Escrito por Andrew Boothman.
   Informacion obtenida de correos escritos por Gregory Neil Shapiro.

   Como ya se ha comentado FreeBSD viene con sendmail ya instalado como
   agente de transferencia de correo por defecto. De esta forma sendmail se
   encarga de gestionar el correo entrante y saliente.

   No obstante, debido a distintas razones algunos administradores de
   sistemas prefieren utilizar otro MTA. Estas razones varian desde
   simplemente querer probar otros programas de transferencia de correo,
   hasta la necesidad de utilizar un determinado programa que hace uso de una
   funcion especifica de un agente determinado. Por suerte cualesquiera que
   sean estas razones FreeBSD posee un sencillo procedimiento para sustituir
   a sendmail.

  27.4.1. Instalacion de un nuevo MTA

   Existen una amplia gama de MTA alternativos a sendmail. Un buen punto de
   partida es el Sistema de Ports de FreeBSD, donde se pueden localizar
   varios. Por supuesto el usuario tiene libertad para utilizar cualquier
   MTA, siempre y cuando se pueda ejecutar en FreeBSD sin problemas.

   Lo primero es instalar el nuevo MTA. Una vez que esta instalado
   normalmente se tiene la oportunidad para decidir si realmente cubre las
   necesidades y tambien se tiene la oportunidad de configurar el nuevo
   software antes de sustituir a sendmail. El usuario debe tener en cuenta
   que el nuevo MTA puede sobreescribir algunos binarios del sistema como por
   ejemplo /usr/bin/sendmail. En cualquier caso el nuevo software de correo
   suele entrar en funcionamiento con una configuracion por defecto.

   Por favor, recuerde que se recomienda leer la documentacion del MTA
   seleccionado para obtener mas informacion.

  27.4.2. Desactivacion de la aplicacion sendmail

   El procedimiento utilizado para ejecutar sendmail cambio
   significativamente entre las releases 4.5-RELEASE y 4.6-RELEASE. De esta
   forma el procedimiento utilizado para la desactivacion hoy en dia es
   sutilmente distinto al utilizado en dichas distribuciones.

    27.4.2.1. FreeBSD 4.5-STABLE antes de 2002/4/4 y anteriores (Incluyendo
    4.5-RELEASE y anteriores)

   Introducir:

 sendmail_enable="NO"

   dentro de /etc/rc.conf. Esta variable desactiva el servicio de recepcion
   de correo de sendmail, pero salvo que se modifique (ver mas adelante) el
   fichero /etc/mail/mailer.conf sendmail todavia sera la aplicacion elegida
   para enviar correo electronico.

    27.4.2.2. FreeBSD 4.5-STABLE desde de 2002/4/4 (Incluyendo 4.6-RELEASE y
    posteriores)

   Para poder desactivar completamente sendmail haga lo siguiente:

 sendmail_enable="NONE"

   dentro del fichero /etc/rc.conf.

  Aviso:

   Se desactiva el servicio de correo de salida de sendmail. Es importanque
   que se reemplace con un sistema de entrega de correo alternativo que sea
   totalmente funcional. En caso contrario funciones del sistema FreeBSD
   tales como periodic(8) no podran entregar sus resultados por correo
   eletronico tal y como normalmente hacen. Varias partes del sistema FreeBSD
   esperan disponer de un sistema de correo funcional compatible con
   sendmail. Si las aplicaciones continuan utilizando los binarios de
   sendmail para realizar envios de correo despues de su desactivacion el
   correo podria ser almacenado en una cola inactiva de sendmail, en cuyo
   caso nunca se entregaria.

   Si solo se quiere desactivar el servicio de correo de entrada de sendmail,
   basta con establecer la variable:

 sendmail_enable="NO"

   dentro de /etc/rc.conf. En rc.sendmail(8) tiene mas informacion sobre las
   opciones de arranque de sendmail.

  27.4.3. Ejecucion del nuevo MTA en el arranque

   Existen dos metodos alternativos para ejecutar el nuevo MTA en el
   arranque, dependiendo de la version de FreeBSD que se este ejecutando.

    27.4.3.1. FreeBSD 4.5-STABLE antes de 2002/4/11 (Incluyendo 4.5-RELEASE y
    anteriores)

   Se debe anadir un script en /usr/local/etc/rc.d/ cuyo nombre termine en
   .sh y que sea ejecutable por root. El script debe aceptar los parametros
   start y stop. Cuando el sistema FreeBSD se esta inicializando, los scripts
   de arranque ejecutaran el siguiente comando:

 /usr/local/etc/rc.d/supermailer.sh start

   La misma orden se puede utilizar tambien para ejecutar el servidor de
   forma manual. Cuando el sistema se esta reiniciando los scripts del
   sistema ejecutan los ficheros ubicados en /usr/local/etc/rc.d/ utilizando
   la opcion stop, en nuestro caso:

 /usr/local/etc/rc.d/supermailer.sh stop

   Dicho comando tambien se puede utilizar para detener el servidor de correo
   de forma manual cuando el sistema FreeBSD se ejecuta con normalidad.

    27.4.3.2. FreeBSD 4.5-STABLE despues de 2002/4/11 (Incluyendo 4.6-RELEASE y
    posteriores)

   Con las ultimas versiones de FreeBSD se puede utilizar el metodo anterior
   pero tambien se puede especificar

 mta_start_script="nombre_de_fichero"

   dentro de /etc/rc.conf, donde nombre_de_fichero es el nombre de algun
   script que se ejecuta en tiempo de arranque para inicializar el nuevo MTA.

  27.4.4. Sustitucion de sendmail como el agente de transporte de correo
  predeterminado.

   El programa sendmail es tan imprescindible y es utilizado por tal multitud
   de programas en los sistemas UNIX(R) que algunos programas simplemente
   asumen que sendmail se encuentra instalado y configurado dentro del
   sistema. Por esta razon varios MTAs alternativos proporcionan su propia
   implementacion de la interfaz de linea de comandos que posee sendmail;
   esto facilita que se puedan utilizar como sustitutos de sendmail sin
   mayores dificultades.

   Por lo tanto si desea utilizar un agente de transporte de correo
   alternativo debe asegurarse de que todo software que intente ejecutar
   binario de sendmail estandar, /usr/bin/sendmail, realmente ejecute el
   nuevo MTA en su lugar. Por fortuna FreeBSD proporciona un sistema llamado
   mailwrapper(8) que realiza precisamente esta tarea.

   Cuando sendmail esta funcionando se debe localizar algo como lo siguiente
   dentro del fichero /etc/mail/mailer.conf:

 sendmail         /usr/libexec/sendmail/sendmail
 send-mail       /usr/libexec/sendmail/sendmail
 mailq           /usr/libexec/sendmail/sendmail
 newaliases      /usr/libexec/sendmail/sendmail
 hoststat        /usr/libexec/sendmail/sendmail
 purgestat       /usr/libexec/sendmail/sendmail

   Esto significa que cuando cualquiera de estos comandos (por ejemplo
   sendmail mismamente) se ejecutan el sistema ejecutara en su lugar una
   copia del el sistema ejecuta en su lugar una copia del " mailwrapper"
   denominada sendmail que chequea el fichero mailer.conf y ejecuta
   /usr/libexec/sendmail/sendmail. Este sistema permite cambiar de una forma
   sencilla los binarios que se ejecutan realmente cuando se invocan las
   funciones de sendmail.

   Si se quiere que ejecutar /usr/local/supermailer/bin/sendmail-compat en
   lugar de sendmail se puede cambiar el fichero /etc/mail/mailer.conf para
   que contenga lo siguiente:

 sendmail         /usr/local/supermailer/bin/sendmail-compat
 send-mail       /usr/local/supermailer/bin/sendmail-compat
 mailq           /usr/local/supermailer/bin/mailq-compat
 newaliases      /usr/local/supermailer/bin/newaliases-compat
 hoststat        /usr/local/supermailer/bin/hoststat-compat
 purgestat       /usr/local/supermailer/bin/purgestat-compat

  27.4.5. Ultimos Pasos

   Una vez que todo estaconfigurado a su gusto hay que matar los procesos de
   sendmail que ya no se necesitan y ejecutar los procesos pertenecientes al
   nuevo software de MTA, o utilizar la opcion mas sencilla: reiniciar la
   maquina. Reinicar la maquina nos brinda la oportunidad de comprobar que se
   ha configurado correctamente el arranque del sistema para que ejecute de
   forma automatica el nuevo MTA.

27.5. Depuracion de Problemas

   27.5.1. ?Por que tengo que utilizar el FQDN para las maquinas de mi
   organizacion?

   27.5.2. sendmail dice mail loops back to myself (el correo vuelve a mis
   manos)

   27.5.3. ?Como puedo ejecutar un servidor de correo utilizando una maquina
   que se conecta a internet mediante modem analogico (dial-up) ?

   27.5.4. ?Por que me siguen saliendo mensajes de error del tipo Relaying
   Denied cuando se trata de enviar correo proveniente de otras maquinas?

27.5.1. ?Por que tengo que utilizar el FQDN para las maquinas de mi organizacion?      
        Probablemente se deba a que la maquina de correo se encuentra en un dominio    
        diferente; si por ejemplo la maquina de correo se encuentra en foo.bar.edu y   
        se desea alcanzar una maquina llamada mumble en el dominio bar.edu se tiene    
        que referir a ella mediante un nombre de dominio completo ("fully-quailified   
        domain name" o FQDN), en este caso mumble.bar.edu en lugar de referirse a ella 
        simplemente como mumble.                                                       
                                                                                       
        Tradicionalmente, la referencia incompleta era posible utilizando "resolvers"  
        de BSD BIND. No obstante la version de BIND que en la actualidad se ofrece con 
        FreeBSD ya no permite por defecto el uso de dichas abreviaturas salvo para     
        aquellas maquinas que pertenecen al dominio al que su sistema pertenezca. Una  
        maquina como mumble sera buscada como mumble.foo.bar.edu o la busqueda sera    
        redireccionada al servidor de dominio raiz del DNS.                            
                                                                                       
        Esto es distinto a lo que ocurria en versiones anteriores de BIND, donde la    
        busqueda se producia a traves de mumble.bar.edu y de mumble.edu. Se recomienda 
        consultar a la RFC 1535 para conocer el motivo que se considerara una practica 
        erronea o incluso un agujero de seguridad.                                     
                                                                                       
        Una buena solucion a este problema puede ser incluir la siguiente linea        
                                                                                       
        search foo.bar.edu bar.edu                                                     
                                                                                       
        en lugar de                                                                    
                                                                                       
        domain foo.bar.edu                                                             
                                                                                       
        dentro del fichero /etc/resolv.conf. No obstante se debe asegurar de que el    
        orden de busqueda no se expande mas alla del "limite entre la administracion   
        local y la administracion publica", tal y como se le denomina en la RFC 1535.  
27.5.2. sendmail dice mail loops back to myself (el correo vuelve a mis manos)         
        Esta pregunta se responde en las FAQ de sendmail de la siguiente forma:        
                                                                                       
        Estoy obteniendo los siguientes mensajes de error:                             
                                                                                       
        553 MX list for domain.net points back to relay.domain.net                     
        554 <user@domain.net>... Local configuration error                             
                                                                                       
        ?Como puedo solucionar esto?                                                   
                                                                                       
        Usted ha especificado que el correo para el dominio (por ejemplo,              
        para el dominio dominio.net) sea reenviado a una maquina determinada           
        (en este caso relay.dominio.net), para lo que se utiliza un registro           
        de DNS de tipo MX,                                                             
        pero la maquina que actua de relay no se                                       
        reconoce a si misma como perteneciente al dominio dominio.net.                 
        Se debe anadir dominio.net al fichero /etc/mail/local-host-names,              
        que recibe el nombre de /etc/sendmail.cw en versiones de sendmail previas      
        a la 8.10.  Se puede utilizar la macro FEATURE(use_cw_file) para indicar       
        donde se encuentra el fichero local-host-names; tambien se                     
        puede anadir "Cw dominio.net" directamente                                     
        al fichero /etc/mail/sendmail.cf                                               
                                                                                       
                                                                                       
        Las FAQ de sendmail se pueden encontrar en http://www.sendmail.org/faq/ y son  
        de lectura obligada si se quiere depurar el comportamiento y la configuracion  
        de sendmail.                                                                   
27.5.3. ?Como puedo ejecutar un servidor de correo utilizando una maquina que se       
        conecta a internet mediante modem analogico (dial-up) ?                        
        Se quiere conectar una maquina FreeBSD dentro de una LAN a Internet. La        
        maquina FreeBSD sera una pasarela de correo para dicha LAN. La conexion        
        mediante PPP no es dedicada.                                                   
                                                                                       
        Existen al menos dos formas distintas de hacerlo. Una de ellas consiste en     
        utilizar UUCP.                                                                 
                                                                                       
        Otra forma consiste en hacerse con un servidor de internet a tiempo completo   
        para proporcionar servicios de agente de transporte secundario para nuestro    
        dominio. Si por ejemplo el dominio de nuestra compania es ejemplo.com, nuestro 
        proveedor de acceso a internet puede instalar lo siguiente en el DNS:          
                                                                                       
        ejemplo.com.          MX        10      ejemplo.com.                           
                              MX        20      ejemplo.net.                           
                                                                                       
        Notese que el agente de correo primario es nuestro dominio, ejemplo.com, y     
        ademas se encuentra configurado un agente de transporte secundario en la       
        maquina ejemplo.net. En este caso solamente se debe especificar una maquina    
        como receptor final de correo (anadiendo Cw ejemplo.com) al fichero            
        /etc/mail/sendmail.cf de la maquina example.com)                               
                                                                                       
        Cuando el sendmail que esta enviando el correo trata de entregar dicho correo  
        primero intentara conectarse con nosotros (ejemplo.com) utilizando el enlace   
        de modem. Lo mas probable es que la operacion termine despues de un tiempo de  
        espera debido a que el enlace modem este caido. La aplicacion sendmail         
        automaticamente entregara el correo al servidor especificado como agente de    
        transporte de correo secundario (segundo registro MX), es decir, entregara el  
        correo a nuestro proveedor de servicios de internet (ejemplo.net). El sitio MX 
        secundario tratara de conectarse con nuestra maquina de una forma periodica    
        con el objeto de entregar el correo a la maquina que actua como agente         
        servidor de correo primario (ejemplo.com).                                     
                                                                                       
        Puede ser de mucha utilidad un script de "login" como el que se muestra a      
        continuacion:                                                                  
                                                                                       
        #!/bin/sh                                                                      
        # Ponme en /usr/local/bin/pppmiconexion                                        
        ( sleep 60 ; /usr/sbin/sendmail -q ) &                                         
        /usr/sbin/ppp -direct pppmiconexion                                            
                                                                                       
        Si vamos a crear un script de "login" separado para un usuario determinado se  
        puede utilizar sendmail -qRejemplo.com en lugar del script anterior. Esto      
        obliga a que se procesen de forma inmediata todos los correos que se           
        encuentren en la cola de ejemplo.com.                                          
                                                                                       
        Vamos a dar una vuelta mas de tuerca a la situacion:                           
                                                                                       
        Mensaje robado a la lista de correo de Proveedores de Servicios de Internet en 
        FreeBSD.                                                                       
                                                                                       
        > Nosotros proporcionamos servicio de MX secundario a un cliente nuestro.      
        > El cliente se conecta a nuestro servidor varias veces al dia                 
        > de  forma automatica para recoger sus correos para almacenarlos en           
        > su servidor MX primario (nosotros no llamamos a su organizacion              
        > justo cuando nos llega un correo suyo).                                      
        > Nuestro sendmail envia la cola de correos cada 30 minutos. En                
        > estos momentos nuestro cliente tiene que estar al menos 30 minutos           
        > conectado para asegurarnos de que todo su correo ha sido enviado al          
        > servidor MX primario.                                                        
        >                                                                              
        > ?Existe algun comando que permita indicar a sendmail que                     
        > envie todos los correos de la cola cuando quiera el cliente?                 
        > El cliente no tiene permisos de superusuario en la maquina que               
        > alberga nuestro agente de transporte, por supuesto.                          
                                                                                       
        En la seccion de "privacy flags" del fichero sendmail.cf                       
        existe una definicion como esta:                                               
        Opgoaway,restrictqrun                                                          
                                                                                       
        Basta con eliminar restrictqrun para permitir que usuarios sin permisos de     
        superusuario arranquen el procesamiento de la cola.                            
        Seria conveniente ademas que reordenaran los registros MX.                     
        Nosotros somos el primer MX para nuestros clientes.                            
        Ademas de esto hay que especificar:                                            
                                                                                       
        # Si somos el mejor MX para una determinada maquina, intenta                   
        # utilizarnos directamente en vez de generar un error de                       
        # configuracion local.                                                         
        OwTrue                                                                         
                                                                                       
        en el archivo de configuracion de sendmail.                                    
        Mediante la configuracion anterior,                                            
        una organizacion remota entregara sus correos directamente a                   
        usted, sin necesidad de intentar conectarse primero a traves de                
        la conexion del cliente.  La etiqueta "OwTrue" se necesita para evitar         
        que sendmail genere un mensaje de error.                                       
        A continuacion ustedes se encargan de entregar el                              
        correo a su(s) respectivo(s) cliente(s) tal como vienen haciendo.              
                                                                                       
        Esta configuracion solo funciona para                                          
        "maquinas individuales",                                                       
        de tal forma que se necesita que el cliente especifique su servidor de correo  
        mediante entradas de tipo A en el DNS.  En concreto se necesita una entrada de 
        tipo A en el DNS para el dominio del cliente ("cliente.com").                  
27.5.4. ?Por que me siguen saliendo mensajes de error del tipo Relaying Denied cuando  
        se trata de enviar correo proveniente de otras maquinas?                       
        En las instalaciones del sistema FreeBSD por defecto sendmail se configura     
        para enviar correo solamente desde la maquina en la cual se esta ejecutando.   
        Por ejemplo si un servidor POP esta disponible los usuarios seran capaces de   
        consultar su correo desde la universidad, el trabajo u otras localizaciones    
        remotas, pero dichos usuarios podran enviar correo desde dichas ubicaciones.   
        Es habitual que unos instantes despues del envio del correo dichos usuarios    
        reciban un mensaje proveniente del MAILER-DAEMON con un error como 5.7         
        Relaying Denied.                                                               
                                                                                       
        Existen varias formas de solventar este problema. La mas sencilla consiste en  
        escribir la direccion IP de su proveedor de servicios dentro del fichero       
        /etc/mail/relay-domains. Una forma rapida de hacerlo seria:                    
                                                                                       
        # echo "un.isp.ficticio.com" > /etc/mail/relay-domains                         
                                                                                       
        Despues de crear o editar dicho fichero se debe reiniciar sendmail. Esto       
        funciona perfectamente si usted es el administrador del servidor y no desea    
        enviar correo localmente o si prefiere utilizar un cliente de correo o         
        cualquier otro sistema en otra maquina distinta a la que alberga el servidor   
        de correo. Es muy util sobre todo cuando solamente se tienen una o dos         
        direcciones de correo eletronico. Si hay en liza un gran numero de direcciones 
        de correo, edite el fichero anterior con su editor de texto favorito y anada   
        uno a uno los correspondientes dominios.                                       
                                                                                       
        un.isp.ficticio.com                                                            
        otro.isp.ficticio.net                                                          
        y.otro.isp.ficticio.org                                                        
        www.ejemplo.org                                                                
                                                                                       
        Ahora, cualquier correo enviado a traves de su sistema por cualquier maquina   
        que se encuentre en este fichero (siempre y cuando el usuario tenga una cuenta 
        en nuestro sistema) podra ser enviado con exito. Es una manera elegante de     
        permitir a los usuarios enviar correo eletronico desde nuestro servidor de     
        correo sin permitir al resto del mundo que haga lo mismo (lo que se conoce     
        como SPAM).                                                                    

27.6. Conceptos Avanzados

   La siguiente seccion trata conceptos mas especificos relacionados con la
   configuracion del correo y la implantacion del servicio de correo en una
   organizacion.

  27.6.1. Configuracion Basica

   Por defecto debemos ser capaces de enviar correo a maquinas externas,
   siempre y cuando tengamos nuestro /etc/resolv.conf bien configurado o
   ejecutemos nuestro propio servidor de nombres. Si queremos que el correo
   para nuestra maquina se nos entregue en nuestra propia maquina, es decir,
   a nuestro propio sendmail, en lugar de tener que ir a recogerlo al
   servidor de correo de nuestra organizacion, podemos usar dos metodos:

     * Ejecutar nuestro propio servidor de nombres y comprar nuestro propio
       dominio. Por ejemplo FreeBSD.org

     * Conseguir la entrega de correo directa hacia nuestra maquina. Esto se
       logra entregando el correo a la direccion IP que se asocia al nombre
       de DNS de nuestra maquina. Por ejemplo ejemplo.FreeBSD.org.

   Independientemente de la opcion elegida para tener entrega directa en
   nuestra maquina debemos poseer una direccion IP estatica (a diferencia de
   las direcciones dinamicas, que son utilizadas en configuraciones donde se
   utiliza el protocolo PPP). Si nos encontramos detras de un cortafuegos se
   debe permitir el trafico SMTP (puerto 25) hacia nuestra maquina. Si ademas
   queremos recibir correo directamente en nuestra maquina se deben cumplir
   los siguientes requisitos:

     * Asegurar que el registro MX de menor numeracion de nuestro DNS apunta
       a la direccion IP de nuestra maquina.

     * Asegurar que no existe ninguna entrada MX en nuestro DNS para nuestra
       maquina. Es decir, mientras que el registro MX del punto anterior hace
       referencia al dominio administrativo que gestionamos con nuestro
       servidor de nombres, en este apartado se quiere destacar que no debe
       existir ningun registro MX especifico para el nombre concreto de
       nuestra maquina.

   Cumpliendo las dos puntualizaciones anteriores podemos recibir correo
   electronico mediante entrega directa en nuestra maquina.

   Por ejemplo:

 # hostname
 ejemplo.FreeBSD.org
 # host ejemplo.FreeBSD.org
 ejemplo.FreeBSD.org has address 204.216.27.XX

   Si se observa esta configuracion la entrega directa de correo para
   <su_login@ejemplo.FreeBSD.org> deberia funcionar sin problemas (suponiendo
   que sendmail se esta ejecutando correctamente en ejemplo.FreeBSD.org).

   Si en lugar de lo anterior ve algo como esto:

 # host ejemplo.FreeBSD.org
 ejemplo.FreeBSD.org has address 204.216.27.XX
 ejemplo.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org

   Todos los correos enviados a nuestro host (ejemplo.FreeBSD.org) seran
   recogidos por hub bajo el mismo nombre de usuario en lugar de ser enviados
   directamente a nuestra maquina.

   La informacion anterior se gestiona utilizando el servidor de DNS. El
   registro de DNS que transporta la informacion de encaminamiento de correo
   eletronico es el registro Mail eXchange. Si no existe ningun registro MX
   el correo se entregara a la direccion IP que se obtenga de resolver el
   nombre de dominio que se encuentre a continuacion del nombre de usuario en
   la direccion de correo de destino (esto es, (despues de la @).

   En un cierto momento la entrada MX para freefall.FreeBSD.org tenia este
   aspecto:

 freefall                MX      30      mail.crl.net
 freefall                MX      40      agora.rdrop.com
 freefall                MX      10      freefall.FreeBSD.org
 freefall                MX      20      who.cdrom.com

   Como se puede observar, freefall tenia varias entradas MX. El numero de MX
   mas bajo es la maquina que recibe correo directamente si se encuentra
   disponible; si dicha maquina no esta accesible por algun motivo las otras
   maquinas (llamadas tambien "MXs de backup") aceptaran los mensajes
   temporalmente, y los transmitiran de nuevo cuando alguna maquina
   perteneciente a alguna entrada MX de numeracion mas baja se encuentre
   disponible y el proceso se repetira hasta que se alcance la maquina que
   tenga el registro MX mas bajo.

   Las organizaciones donde residen los servidores (MX) de backup deberian
   poseer acceso a internet de una forma independiente para minimizar el
   riesgo de perdida de conectividad. Nuestro ISP o cualquier otra
   organizacion independiente deberia poder proporcionarnos este servicio sin
   problemas.

  27.6.2. Correo para Nuestro Dominio

   Para establecer un "mailhost" (servidor de correo) en nuestra organizacion
   debemos ser capaces de redirigir el correo destinado a cualquier maquina
   de nuestra organizacion hacia nuestro servidor de correo. Basicamente
   queremos "reclamar" como nuestro cualquier correo destinado a cualquier
   maquina de nuestro dominio (en este caso *.FreeBSD.org) y desviarlo a
   nuestro servidor de tal forma que los usuario lean su correo utilizando
   nuestra maquina servidora.

   Para hacer las cosas lo mas sencillas posible se debe crear una cuenta de
   usuario (con el mismo nombre de usuario) tanto en el servidor de correo
   como en la maquina del usuario o destinatario final del correo. adduser(8)
   puede usarse para ello.

   El servidor de correo debe funcionar como el agente de transporte
   predeterminado para todas las maquinas de nuestra organizacion. Esto se
   realiza mediante la siguiente configuracion del DNS:

 ejemplo.FreeBSD.org     A       204.216.27.XX           ; Workstation
                         MX      10 hub.FreeBSD.org      ; Mailhost

   Esta configuracion redirigira el correo para cualquier estacion de trabajo
   hacia nuestro servidor de correo sin que tengan importancia las
   direcciones IP asignadas mediante el registro de tipo A. Recordemos que el
   correo siempre se encamina utilizando primero los registros de tipo MX.

   Normalmente no podremos realizar esta configuracion salvo que estemos
   ejecutando nuestro propio servidor de DNS para nuestro dominio. Si no es
   el caso y no es posible ejecutar nuestro propio servidor de DNS debemos
   comunicarnos con nuestro proveedor de servicios o con quien pueda
   proporcionarnos servicio de DNS y solicitarle una modificacion como la
   anterior.

   Si ademas ofrecemos servicios de alojamiento virtual de correo la
   siguiente informacion puede resultar util. Asumiremos que tenemos un
   cliente con su propio dominio, por ejemplo cliente1.org y queremos que
   todo el correo enviado a cliente1.org sea redirigido hasta nuestro
   servidor de correo, mail.nuestroservidor.com. La entrada necesaria en el
   DNS deberia ser la siguiente:

 cliente1.org            MX      10      mail.nuestroservidor.com

   No necesitamos ningun registro de tipo A para cliente1.org si solamente
   queremos gestionar el correo para ese dominio.

  Nota:

   Tenga en cuenta que un ping a cliente1.org no funcionara a menos que
   exista un registro de tipo A para dicha maquina.

   La ultima cosa que debemos realizar en nuestro servidor de correo es
   comunicar a sendmail para que dominios y/o maquinas debe aceptar correo.
   Existen varias formas en las que se puede realizar esta tarea. Cualquiera
   de las siguiente funcionara:

     * Anadir las maquinas deseadas al fichero /etc/mail/local-host-names si
       se esta utlizando la macro FEATURE(use_cw_file). Si se esta utilizando
       una version de sendmail anterior a la 8.10 el fichero que se debe
       utilizar es /etc/sendmail.cw.

     * Anadir la linea Cwsu.servidor.com al fichero /etc/sendmail.cf o
       /etc/mail/sendmail.cf si se esta utilizando una version de sendmail
       posterior a la version 8.10.

27.7. SMTP con UUCP

   La configuracion de sendmail que se proporciona con la distribucion de
   FreeBSD esta disenada para organizaciones que se conectan directamente a
   internet. Las organizaciones que deseen enviar y recibir sus correos
   utilizando UUCP deben instalar otro fichero de configuracion para
   sendmail.

   El ajuste de forma manual del archivo /etc/mail/sendmail.cf es un tema
   para expertos. La version 8 de sendmail genera ficheros de configuracion
   mediante el preprocesador m4(1), gracias al que las opciones de
   configuracion se pueden escribir utilizando un nivel de abstraccion mayor.
   Los archivos de configuracion de m4(1) se pueden encontrar en
   /usr/src/usr.sbin/sendmail/cf.

   Si no se instalo el sistema base con todas las fuentes el conjunto de
   ficheros de configuracion de sendmail se puede obtener a partir de un
   paquete de fuentes determinado. Suponiendo que tengamos el CDROM con el
   codigo fuente de FreeBSD montado se puede ejecutar:

 # cd /cdrom/src
 # cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail

   Este comando extrae solamente unos pocos cientos de kilobytes. El fichero
   README que hay en el directorio cf puede servirle como una introduccion
   basica a la configuracion mediante m4(1).

   La mejor forma de soportar la entrega de correo mediante UUCP es
   utilizando la caracteristica mailertable. Esta caracteristica crea una
   base de datos que sendmail utiliza para tomar decisiones de
   encaminamiento.

   En primer lugar creamon el fichero .mc. El directorio
   /usr/src/usr.sbin/sendmail/cf/cf alberga varios ejemplos del mismo.
   Suponiendo que nuestro fichero configuracion se llama foo.mc para
   convertir dicho archivo en un fichero sendmail.cf valido basta con
   ejecutar lo siguiente:

 # cd /usr/src/usr.sbin/sendmail/cf/cf
 # make foo.cf
 # cp foo.cf /etc/mail/sendmail.cf

   Un fichero .mc suele tener este aspecto:

 VERSIONID(`Su numero de version') OSTYPE(bsd4.4)

 FEATURE(accept_unresolvable_domains)
 FEATURE(nocanonify)
 FEATURE(mailertable, `hash -o /etc/mail/mailertable')

 define(`UUCP_RELAY', su.relay.uucp)
 define(`UUCP_MAX_SIZE', 200000)
 define(`confDONT_PROBE_INTERFACES')

 MAILER(local)
 MAILER(smtp)
 MAILER(uucp)

 Cw    alias.de.su.servidor
 Cw    nombredesunodouucp.UUCP

   Las lineas que contienen accept_unresolvable_domains, nocanonify, y
   confDONT_PROBE_INTERFACES prohiben la utilizacion del DNS durante la
   entrega de correo. La clausula UUCP_RELAY es necesaria para soportar
   entrega mediante UUCP. Lo unico que hay que hacer es escribir un nombre de
   maquina en ese punto. Dicha maquina debe ser capaz de gestionar las
   direcciones del pseudo-dominio .UUCP; en la mayoria de los casos se
   escribe en este punto el nombre de la maquina perteneciente al proveedor
   de servicios que hace de relay.

   Una vez que tenemos esto configurado se necesita un fichero
   /etc/mail/mailertable. Si solamente tenemos un enlace con el exterior, que
   usamos para todos nuestro correos, basta una configuracion como la que se
   muestra a continuacion:

 #
 # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
 .                             uucp-dom:su.relay.uucp

   Un ejemplo mas complejo puede parecerse al siguiente:

 #
 # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
 #
 horus.interface-business.de   uucp-dom:horus
 .interface-business.de        uucp-dom:if-bus
 interface-business.de         uucp-dom:if-bus
 .heep.sax.de                  smtp8:%1
 horus.UUCP                    uucp-dom:horus
 if-bus.UUCP                   uucp-dom:if-bus
 .                             uucp-dom:

   Las primeras tres lineas se encargan de manejar casos especiales en los
   que el correo dirigido directamente al dominio no se envia a la ruta por
   defecto sino a algun vecino UUCP para acortar el numero de saltos
   involucrados en la entrega de dichos correos. La siguiente linea gestiona
   el correo para el dominio ethernet local, el cual puede ser entregado
   utilizando SMTP. Finalmente los vecinos UUCP se mencionan en la notacion
   de pseudo-dominio .UUCP para permitir que un vecino UUCP receptor de
   correo pueda sobreescribir las reglas por defecto. La ultima linea siempre
   es un punto; se asocia con cualquier otra cosa que no ha sido tratada en
   reglas anteriores y donde se realiza entrega UUCP a un vecino UUCP que
   sirve como pasarela de correo universal para todo el mundo. Todos los
   nombres de maquinas bajo la clave uucp-dom: deben ser vecinos UUCP
   validos, lo cual se puede verificar utilizando el comando uuname.

   Recuerde que este fichero debe convertirse en una base de datos DBM antes
   de que usarse. El comando que se utiliza para realizar esta tarea se suele
   especificar como un comentario al principio del fichero mailertable. Cada
   vez que se modifique el fichero mailertable se debe ejecutar dicho
   comando.

   Un consejo final: si dudamos sobre una determinada ruta de encaminamiento
   de correo se puede ejecutar sendmail con el parametro -bt. Este parametro
   ejecuta sendmail en modo prueba de direcciones; simplemente basta con
   escribir 3,0 seguido por la direccion de correo de la que queremos
   comprobar su correcto encaminamiento. La ultima linea nos dice el agente
   de correo interno que se utiliza, la maquina de destino con que el agente
   sera invocado y la direccion (posiblemente traducida) de correo. Se puede
   abandonar este modo de funcionamiento escribiendo Ctrl+D.

 % sendmail -bt
 ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
 Enter <ruleset> <address>
 > 3,0 prueba@ejemplo.com
 canonify           input: foo @ example . com
 ...
 parse            returns: $# uucp-dom $@ su.relay.uucp $: prueba < @ ejemplo . com . >
 > ^D

27.8. Configuracion para solamente enviar correo

   Escrito por Bill Moran.

   Existen multitud de casos en los que puede bastarnos con enviar nuestro
   correo a traves de una pasarela o relay. He aqui algunos de ellos:

     * Nuestra computadora es una maquina de escritorio, pero queremos ser
       capaces de utilizar programas como send-pr(1). Para ello se deberia
       utilizar el relay de nuestro ISP.

     * Nuestra computadora es un servidor que no gestiona correo de forma
       local, si no que necesita pasar todos los correos recibidos una
       pasarela que se encarga de su procesamiento y entrega final.

   Casi cualquier MTA es capaz de actuar como pasarela o relay. Por desgracia
   configurar un MTA para que solo gestione correo saliente puede ser muy
   complicado. Programas del estilo de sendmail y postfix son demasiado
   pesados para realizar solamente esta tarea.

   Si ademas estamos utilizando un servicio de acceso a internet tipico
   nuestro contrato puede prohibir explicitamente la ejecucion de un servidor
   de correo (o los puertos pueden estar filtrados).

   La forma mas sencilla de utilizar un servicio de pasarela es mediante la
   instalacion del port mail/ssmtp. Basta con ejecutar el siguiente comando
   como root:

 # cd /usr/ports/mail/ssmtp
 # make install replace clean

   Una vez que ha sido instalado mail/ssmtp podemos configurarlo mediante un
   fichero de solo cuatro lineas ubicado en /usr/local/etc/ssmtp/ssmtp.conf:

 root=sudireccionrealdecorreo@ejemplo.com
 mailhub=mail.ejemplo.com
 rewriteDomain=ejemplo.com
 hostname=_HOSTNAME_

   Debemos asegurarnos de que se utiliza una direccion de correo real para
   root. Se debe introducir nuestra pasarela de correo en lugar de
   mail.ejemplo.com (algunos ISP llaman a la pasarela "servidor de correo
   saliente" o simplemente "servidor SMTP").

   Debemos asegurarnos de que se desactiva sendmail mediante
   sendmail_enable="NONE" en /etc/rc.conf.

   mail/ssmtp acepta algunas otras opciones. Consulte el fichero de ejemplo
   que encontrara en /usr/local/etc/ssmtp; consulte tambien la pagina de
   manual de ssmtp, en la que hay mas ejemplos e informacion al respecto.

   Ejecutar ssmtp de esta forma permite que cualquier software de nuestra
   computadora que necesite enviar correo funcione sin problemas y a la vez
   poder cumplir con las normas estipuladas en el contrato con nuestro ISP.
   Al mismo tiempo evitamos el uso de nuestro servidor de correo por parte de
   " spammers".

27.9. Utilizacion del correo con una conexion mediante modem analogico (dial-up)

   Si se dispone de una direccion IP privada no es necesario realizar ningun
   ajuste a partir de la configuracion por defecto. Basta con asignar como
   nombre de nuestra maquina el nombre que tenemos registrado en el DNS y
   sendmail se encargara del resto.

   Por otra parte si utilizamos una conexion temporal a internet mediante PPP
   y se nos asigna una direccion IP de forma dinamica, lo mas normal es tener
   nuestras carpetas de correo alojadas en el servidor de correo de nuestro
   proveedor de servicios. Supongamos que el dominio de nuestro ISP es
   ejemplo.net y que nuestro nombre de usuario es usuario; ademas hemos
   llamado a nuestra user, ademas, hemos llamado a nuestra maquina bsd.home,
   y nuestro ISP nos ha comunicado que debemos utilizar como pasarela la
   maquina relay.ejemplo.net.

   Para recuperar correo de nuestra carpeta de correo se debe instalar un
   agente de recuperacion automatica de correo. fetchmail es una buena
   eleccion puesto que permite utilizar varios protocolos. Este programa esta
   disponible como un paquete y tambien desde la coleccion de ports
   (mail/fetchmail). Normalmente nuestro ISP proporciona POP POP. Si
   utilizamos ppp a nivel de usuario se puede recuperar automaticamente el
   correo cuando se establece la conexion ppp utilizando el fichero
   /etc/ppp/ppp.linkup:

 MYADDR:
 !bg su user -c fetchmail

   Si utilizamos sendmail (como se muestra mas adelante) para entregar correo
   a cuentas remotas probablemente queramos que sendmail procese nuestras
   colas de correo tan pronto como nuestra conexion de internet se
   establezca. Para ello escriba el siguiente comando tras el comando de
   fetchmail que hemos escrito antes en el fichero /etc/ppp/ppp.linkup:

   !bg su user -c "sendmail -q"

   Asumiendo que tenemos una cuenta para el usuario usuario en bsd.home. En
   el directorio "home" del usuario usuario en la maquina bsd.home debemos
   crear un fichero .fetchmailrc con el siguiente contenido:

 poll ejemplo.net protocol pop3 fetchall pass Secr3To

   Este fichero debe tener permisos de lectura solo para el propio dueno ya
   que contiene la contrasena de acceso a nuestra cuenta de POP en nuestro
   ISP ( Secr3To).

   Para poder enviar correo con la cabecera from: correcta, debemos decir a
   sendmail que utilice usuario@ejemplo.net en vez de usuario@bsd.home.
   Siguiendo con nuestro ejemplo es necesario decirle a sendmail que envie
   todo el correo a traves de la pasarela relay.ejemplo.net.

   El siguiente fichero de configuracion .mc debe ser suficiente para cumplir
   con las anteriores tareas:

 VERSIONID(`bsd.home.mc version 1.0')
 OSTYPE(bsd4.4)dnl
 FEATURE(nouucp)dnl
 MAILER(local)dnl
 MAILER(smtp)dnl
 Cwlocalhost
 Cwbsd.home
 MASQUERADE_AS(`ejemplo.net')dnl
 FEATURE(allmasquerade)dnl
 FEATURE(masquerade_envelope)dnl
 FEATURE(nocanonify)dnl
 FEATURE(nodns)dnl
 define(`SMART_HOST', `relay.ejemplo.net')
 Dmbsd.home
 define(`confDOMAIN_NAME',`bsd.home')dnl
 define(`confDELIVERY_MODE',`deferred')dnl

   En la seccion anterior se explica como convertir este fichero .mc en un
   fichero de configuracion para sendmail, sendmail.cf. No debemos olvidar
   reiniciar sendmail despues de mofidificar el fichero sendmail.cf.

27.10. Autentificacion utilizando SMTP

   Escrito por James Gorham.

   La autentificacion mediante SMTP puede proporcionarnos diversas ventajas.
   Anade una capa adicional de seguridad a a sendmail y ademas proporciona a
   los usuarios moviles (usuarios que cambian de maquina) la posibilidad de
   mantener el mismo servidor de correo sin necesidad de reconfigurar sus
   agentes de usuario de correo cada vez que se trasladan.

    1. Instalar security/cyrus-sasl desde los ports. Se puede encontrar dicho
       port en security/cyrus-sasl. security/cyrus-sasl posee varias opciones
       en tiempo de compilacion pero para el metodo en particular que se va a
       explicar en esta seccion basta con asegurarse de seleccionar la opcion
       pwcheck.

    2. Despues de instalar security/cyrus-sasl, edite
       /usr/local/lib/sasl/Sendmail.conf (o creelo si no existe) y anada la
       siguiente linea:

 pwcheck_method: passwd

       Este metodo activa la autentificacion de sendmail contra nuestra base
       de datos de FreeBSD, passwd. Esto nos evita el problema de tener que
       crear un nuevo conjunto de usuarios y contrasenas para cada usuario
       que necesite validarse mediante SMTP y ademas nos permite mantener el
       mismo "login" y contrasena que los usuarios utilizan para acceder a
       sus cuentas para el acceso al correo electronico.

    3. Editar/etc/make.conf y anadir las siguientes lineas:

 SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
 SENDMAIL_LDFLAGS=-L/usr/local/lib
 SENDMAIL_LDADD=-lsasl

       Estas lineas proporcionan a sendmail las opciones de configuracion
       necesarias para enlazar con cyrus-sasl en tiempo de compilacion.
       Debemos asegurarnos de que cyrus-sasl ha sido instalado correctamente
       recompilar sendmail.

    4. Recompile sendmail utilizando el siguiente comando:

 # cd /usr/src/usr.sbin/sendmail
 # make cleandir
 # make obj
 # make
 # make install

       La compilacion de sendmail no deberia dar problemas siempre y cuando
       /usr/src no haya cambiado sustancialmente y siempre y cuando las
       bibliotecas compartidas necesarias se encuentren disponibles.

    5. Una vez que sendmail se ha compilado y reinstalado con correctamente
       debemos editar el fichero /etc/mail/freebsd.mc (o el fichero que se
       utilice como .mc de referencia. Hay administradores que escogen
       utilizar la salida de hostname(1) como el nombre del fichero .mc que
       se utiliza para la configuracion de sendmail por motivos de
       uniformidad ). Anada las siguientes lineas a dicho fichero:

 dnl set SASL options
 TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
 define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
 define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl

       Estas opciones configuran los distintos metodos de que dispone
       sendmail para validar a los usuarios de correo. Si se desea utilizar
       otro metodo distinto a pwcheck por favor consulte la documentacion.

    6. Para terminar ejecutamos make(1) mientras nos encontramos dentro de
       /etc/mail. Este comando trata el fichero .mc y crea el fichero .cf
       correspondiente (con el mismo nombre que el anterior pero terminado en
       .cf). A continuacion se utiliza el comando make install restart, el
       cual copia el fichero .cf recien generado al fichero sendmail.cf y a
       continuacion reinicia sendmail. Para mas informacion sobre este
       proceso puede consultarse el contenido de /etc/mail/Makefile.

   Si todo lo anteriormente comentado ha funcionado correctamente deberiamos
   ser capaces de introducir la informacion de nuestro "login" en nuestro
   cliente de correo y enviar un mensaje de prueba. Para investigar mas a
   fondo estos temas se puede habilitar la opcion LogLevel de sendmail al
   valor 13 y observar detenidamente el archivo /var/log/maillog en busca de
   posibles mensajes de error.

   Puede ser necesario anadir las siguientes lineas al fichero /etc/rc.conf
   de modo que el servicio explicado en esta seccion se encuentre disponible
   automaticamente desde el arranque:

 sasl_pwcheck_enable="YES"
 sasl_pwcheck_program="/usr/local/sbin/pwcheck"

   Esto permite que la inicializacion de SMTP_AUTH se produzca durante el
   arranque del sistema.

   Para mas informacion por favor visite la pagina autentificacion SMTP de
   sendmail.

27.11. Agente de Correo de Usuario

   Escrito por Marc Silver.

   Un agente de correo de usuario (MUA en ingles Mail User Agent) es una
   aplicacion que se utiliza para enviar y recibir correo. Coomo el correo
   electronico esta en constante evolucion y cada vez se vuelve mas complejo
   y con mas opciones, los MUAs son cada vez mas complejos y potentes. Esto
   permite a los usuarios disponer de mayor flexibilidad y funcionalidad.
   FreeBSD admite para muchisimos agentes de correo de usuario, todos los
   cuales pueden instalarse desde los Ports. Los usuarios pueden elegir entre
   lientes de correo con interfaz grafica como evolution o balsa o entre
   clientes basados en consola como mutt, pine o mail, e incluso utilizar
   interfaces web.

  27.11.1. mail

   mail(1) es el agente de correo de usuario (MUA) que viene por defecto con
   FreeBSD. Es un MUA de consola que ofrece toda la funcionalidad basica
   necesaria para enviar y recibir correos, aunque resulta limitado limitado
   en su capacidad para manejar adjuntos y solamente soporta carpetas de
   correo locales.

   Aunque mail no soporta de forma nativa la interaccion con servidores de
   correo mediante POP o IMAP estas carpetas de correo remotas pueden
   descargarse a un fichero mbox local utilizando una aplicacion de descarga
   como fetchmail, que se describe en este mismo capitulo en (Seccion 27.12,
   "Manejo de fetchmail").

   Para enviar y recibir correo eletronico basta con ejecutar el comando
   mail. Veamos un ejemplo:

 % mail

   El contenido de la carpeta de usuario en el directorio /var/mail se leen
   automaticamente. Si la carpeta se encuentra vacia la aplicacion termina su
   ejecucion con un mensaje que indica que no ha podido encontrar correo. Una
   vez que la carpeta ha sido leida la interfaz de la aplicacion entra en
   funcionamiento y se muestra por pantalla un listado de los mensajes
   recuperados. Los mensajes se numeran automaticamente y pueden leerse como
   se observa en el siguiente ejemplo:

 Mail version 8.1 6/6/93.  Type ? for help.
 "/var/mail/marcs": 3 messages 3 new
 >N  1 root@localhost        Mon Mar  8 14:05  14/510   "test"
  N  2 root@localhost        Mon Mar  8 14:05  14/509   "user account"
  N  3 root@localhost        Mon Mar  8 14:05  14/509   "sample"

   Los mensajes se pueden leer utilizando el comando t de mail escribiendo a
   continuacion el numero del mensaje que queremos leer. En este ejemplo
   vamos a leer el primer correo:

 % t 1
 Message 1:
 From root@localhost  Mon Mar  8 14:05:52 2004
 X-Original-To: marcs@localhost
 Delivered-To: marcs@localhost
 To: marcs@localhost
 Subject: test
 Date: Mon,  8 Mar 2004 14:05:52 +0200 (SAST)
 From: root@localhost (Charlie Root)

 This is a test message, please reply if you receive it.

   Como podemos observar en el ejemplo anterior el comando t muestra el
   contenido del correo eletronico con todas sus cabeceras. Para mostrar el
   listado con todos los correos de nuevo, se debe utilizar la tecla h.

   Si el correo eletronico requiere una contestacion se puede utilizar la
   aplicacion mail para responder utilizando la tecla R o r. La tecla R
   indica a mail que conteste solo al origen (remitente) del correo, mientras
   que la tecla r tanto al remitente a los otros usuarios receptores del
   mensaje original. Ademas ambos comandos se pueden ejecutar escribiendo a
   continuacion el numero que identifica al mensaje que se quiere responder.
   Tras esto la respuesta puede redactarse , y se debe indicar el final del
   mensaje mediante un punto (.) a continuacion de un salto de linea. Veamos
   un ejemplo:

 % R 1
 To: root@localhost
 Subject: Re: test

 Thank you, I did get your email.
 .
 EOT

   Para enviar nuevos correos eletronicos se debe utilizar la tecla m seguida
   de la direccion de de correo del destinatario. Se pueden especificar
   varios destinatarios de correo separando cada direccion de correo con una
   coma ( , ). El asunto del mensaje de correo se puede escribir a
   continuacion seguido por el cuerpo del mensaje. El final del mensaje se
   especifica como en el caso anterior, utilizando un . tras un saldo de
   linea y pulsando la tecla "enter".

 % mail root@localhost
 Subject: I mastered mail

 Now I can send and receive email using mail ... :)
 .
 EOT

   Mientras nos encontremos dentro de la mail el comando ? puede utilizarse
   para mostrar la ayuda en linea aunque la principal fuente de informacion
   detallda sobre esta aplicacion es la pagina man mail(1).

  Nota:

   Tal y como se ha dicho ya la aplicacion mail(1) no fue disenada
   originalmente para gestionar adjuntos, por lo que su forma de gestionarlos
   resulta ser extremadamente mala. MUA mas modernos como mutt gestionan los
   adjuntos de correo de una forma mucho mas inteligente. Si se desea
   utilizar el comando mail el port converters/mpack le puede resultar
   bastante util.

  27.11.2. mutt

   mutt es un agente de correo de usuario pequeno pero muy potente, funcional
   y con excelentes caracteristicas; veamos algunas:

     * La habilidad de agrupar mensajes en hilos.

     * Soporte de PGP para cifradon y firma digital de correos eletronicos.

     * Soporte de tipos MIME.

     * Soporte de gestion de correo en formato Maildir.

     * Altamente configurable por el usuario.

   Toda estas caracteristicas hacen de mutt uno de los agentes de correo mas
   avanzados del momento. Consulte http://www.mutt.org para mas informacion
   sobre mutt.

   La version estable de mutt se puede instalar usando el port mail/mutt
   mientras que la version de desarrollo esta en mail/mutt-devel. Una vez que
   se ha instalado el port, mutt puede ejecutarse mediante el siguiente
   comando:

 % mutt

   mutt lee automaticamente el contenido de la carpeta de correo del usuario
   dentro del directorio /var/mail y muestra por pantalla su contenido. Si el
   directorio esta vacio mutt quedara a la espera de los comandos que pueda
   pasarle el usuario. En el ejemplo que se muestra a continuacion puede
   verse como mutt facilita la lista de mensajes al usuario:

   Para leer un correo basta con seleccionarlo usando las teclas de cursor, y
   presionando la tecla Enter. Veamos como muestra mutt un correo
   electronico:

   Al igual que ocurre con mail(1) mutt permite que los usuarios contesten al
   remitente de cualquier mensaje asi como a los demas receptores. Para
   responder solo al remitente se puede utilizar la tecla r. Para responder a
   un grupo, es decir a todos los receptores y al remitente del correo
   eletronico pulse g.

  Nota:

   mutt tiene vi(1) como editor por defecto para crear y responder a los
   mensajes de correo eletronico. Si prefiere emplear otro editor modifique
   el valor de la variable editor en .muttrc.

   Para escribir un mensaje de correo presione la tecla m. Despues de
   escribir el asunto mutt ejecuta vi(1) y el cuerpo del mensaje puede
   escribirse. Una vez escrito el correo salga de vi y mutt se ejecutara de
   nuevo mostrando por pantalla un resumen del correo que esta a punto de ser
   enviado. Para enviar ese correo hay que pulsar y. Este es un ejemplo de
   uno de esos resumenes:

   mutt tambien contiene una amplia ayuda a la que se accede desde la mayoria
   de los menus pulsando la tecla ?. La primera lina de la pantalla tambien
   muestra las teclas de metodo abreviado cuando es posible utilizarlas.

  27.11.3. pine

   pine es una aplicacion de correo enfocada a los usuarios principiantes o
   inexpertos pero tambien incluye algunas caracteristicas avanzadas.

  Aviso:

   Se han descubierto en pine varias vulnerabilidades que pueden explotarse
   de forma remota. Esas vulnerabilidades permiten que atacantes remotos
   puedan ejecutar codigo como si fueran usuarios locales del sistema
   mediante el envio de correos con un formato determinado. Todos los
   problemas conocidos se han resuelto pero el codigo de pine esta escrito de
   una forma insegura y el "Security Officer" de FreeBSD opina que es
   probable que existan todavia vulnerabilidades sin descubrir. Si decide
   instalar pine debe asumir los riesgos que ello puede implicar.

   La version actual de pine se puede instalar utilizando el port mail/pine4.
   Una vez que se ha instalado pine se puede ejecutar mediante el siguiente
   comando:

 % pine

   La primera vez que se ejecuta pine se muestra un mensaje de bienvenida con
   una pequena introduccion a la herramienta junto con una peticion del
   equipo de desarrollo de pine en la que se solicita que se envie un correo
   de forma anonima un correo de forma anonima para que puedan hacerse una
   idea s de cuantos usuarios estan utilizando la herramienta. Para enviar
   dicho correo hay que presionar la tecla Enter, o bien puede pulsar la
   tecla E para salir de la ventana de bienvenida sin enviar dicho correo. A
   continuacion se muestra un ejemplo de la pagina de bienvenida:

   Los usuarios disponen de un menu principal, que puede navegarse utilizando
   las flechas. Este menu proporciona atajos para la composicion de nuevos
   correos, para navegar a traves de las carpetas de correo, e incluso para
   la administracion de la libreta de direcciones. Justo debajo del menu
   principal, se muestran las teclas de metodo abreviado (atajos) que pueden
   utilizarse en cada momento.

   El directorio por defecto que pine intenta abrir es inbox. Para ver el
   indice de todos los mensajes recibidos pulse la tecla I o seleccione la
   opcion de menu denominada MESSAGE INDEX como se muestra a continuacion:

   El indice muestra los mensajes en el directorio actual y puede navegarse
   en el utilizando las teclas del cursor. El mensaje seleccionado se puede
   leer presionando la tecla Enter.

   En la captura de pantalla que se muestra a continuacion se muestra un
   mensaje de ejemplo. Las teclas de atajo se muestran como referencia en la
   parte baja de la pantalla. Un ejemplo de dichas teclas de metodo abreviado
   es la tecla r que permite responder al mensaje que se muestra en dicho
   momento.

   La contestacion a un mensaje de correo eletronico en pine se realiza
   mediante el editor pico, que se instala por defecto junto con pine. pico
   permite navegar de forma sencilla por los distintos mensajes de correo y
   es ligeramente mas sencilla de manejar que vi(1), sobre todo para los
   usuarios noveles. Una vez que se ha escrito la replica al correo se envia
   pulsando la tecla Ctrl+X. pine pedira confirmacion antes de enviarlo.

   pine puede configurarse utilizando la entrada SETUP del menu principal. Se
   ruega consultar http://www.washington.edu/pine/ para obtener mas
   informacion.

27.12. Manejo de fetchmail

   Escrito por Marc Silver.

   fetchmail es un cliente de IMAP y POP que permite a los usuarios descargar
   automaticamente el correo de cuentas remotas en servidores IMAP y POP y
   almacenarlos en carpetas de correo locales; una vez en local, se puede
   acceder a los correos de una forma mas sencilla y utilizando multitud de
   programas cliente. fetchmail se puede instalar a partir del port
   mail/fetchmail. Veamos algunas de sus caracteristicas mas utiles:

     * Suporte de POP3, APOP, KPOP, IMAP, ETRN y ODMR.

     * Puede reenviar correo utilizando SMTP lo que permite que las reglas de
       filtrado, reenvio y "aliasing" funcionen correctamente.

     * Se puede ejecutar en modo daemon comprobar periodicamente el correo
       entrante.

     * Puede recuperar correo de multiples carpetas y reenviarlos, en funcion
       de la configuracion establecida, a varios usuarios locales.

   Queda fuera del objetivo de este documento explicar todas las
   caracteristicas de fetchmail pero algunas de ellas se exponen a
   ontinuacion. fetchmail usa un fichero de configuracion denominado
   .fetchmailrc. Este fichero incluye informacion sobre el servidor de correo
   remoto y los datos necesarios para poder hacer login en el. Debido a la
   naturaleza sensible de la informacion que se almacena en dicho fichero se
   recomienda modificar los permisos para que sea de solo sea legible por su
   propietario. Lo conseguira mediante el siguiente comando:

 % chmod 600 .fetchmailrc

   El siguiente ejemplo muestra un fichero de configuracion .fetchmailrc.
   Este ejemplo sirve para automatizar la descarga del correo de un
   determinado usuario mediante POP. El fichero de configuracion hace que
   fetchmail se conecte a ejemplo.com utilizando como nombre de usuario
   joesoap y como contrasena XXX. En el ejemplo se asume que el usuario
   joesoap tambien es un usuario valido en el sistema local.

 poll ejemplo.com protocol pop3 username "joesoap" password "XXX"

   El siguiente ejemplo permite a fetchmail conectarse a multiples servidores
   POP e IMAP y redirige los correos a diferentes usuarios locales en funcion
   de la configuracion establecida:

 poll ejemplo.com proto pop3:
 user "joesoap", with password "XXX", is "jsoap" here;
 user "andrea", with password "XXXX";
 poll ejemplo.net proto imap:
 user "john", with password "XXXXX", is "myth" here;

   fetchmail se puede ejecutar en modo daemon mediante el parametro -d
   seguido seguido por un intervalo de tiempo (expresado en segundos) que
   indica cada cuanto tiempo debe fetchmail interrogar a los distintos
   servidores listados en .fetchmailrc. El siguiente ejemplo hace que
   fetchmail interroge cada 60 segundos:

 % fetchmail -d 60

   Se puede encontrar mas informacion sobre fetchmail en
   http://www.catb.org/~esr/fetchmail/.

27.13. Uso de procmail

   Escrito por Marc Silver.

   procmail es una aplicacion increiblemente potente que se utiliza para
   filtrar el correo de entrada. Permite a los usuarios definir "reglas" que
   se asocian con correos entrantes y que realizan funciones concretas, como
   reencaminar el correo a carpetas o direciones alternativas. procmail se
   puede instalar utilizando el port mail/procmail. Una vez instalado, se
   puede integrar directamente en la mayoria de los MTAs; por favor, consulte
   la documentacion del MTA que utilice para saber mas sobre la integracion
   entre ambos. Por otro lado procmail se puede integrar con el MTA que
   prefiera de una forma sencilla anadiendo la siguiente linea al fichero
   .forward dentro del directorio home del usuario que desee usar procmail:

 "|exec /usr/local/bin/procmail || exit 75"

   La siguiente seccion muestra algunas reglas basicas de procmail, junto con
   una breve descripcion de las acciones que realizan. Estas reglas, y muchas
   otras se deben insertar dentro del fichero .procmailrc ubicado en el
   directorio home del usuario.

   En la pagina man de "procmailex" se explica la mayoria de estas reglas.

   Reenvio de todo el correo proveniente de usuario@ejemplo.com hacia la
   direccion externa correodefiar@ejemplo.com:

 :0
 * ^From.*usuario@ejemplo.com
 ! correodefiar@ejemplo.com

   Reenvio de todos los correos que ocupen menos de 1000 bytes a la direccion
   corredefiar@ejemplo2.com:

 :0
 * < 1000
 ! correodefiar@ejemplo2.com

   Envio de todos los correos dirigidos a opcional@ejemplo.com hacia una
   carpeta de correo llamada opcional:

 :0
 * ^TOopcional@ejemplo.com
 opcional

   Envio de todos los correos con un asunto que contenga la palabra "Spam" al
   dispositivo /dev/null:

 :0
 ^Subject:.*Spam
 /dev/null

   Una util receta para examinar mensajes de correo provenientes de listas de
   distribucion de FreeBSD.org y poner cada mensaje en el directorio
   apropiado en funcion del origen del mensaje:

 :0
 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
 {
         LISTNAME=${MATCH}
         :0
         * LISTNAME??^\/[^@]+
         FreeBSD-${MATCH}
 }

Capitulo 28. Servidores de red

   Reorganizado por Murray Stokely.
   Tabla de contenidos

   28.1. *

28.1. *

   Pendiente de traduccion. Este capitulo incluye tambien parte del contenido
   del Capitulo 29, Networking avanzado, "networking" avanzado.

Capitulo 29. Networking avanzado

   Tabla de contenidos

   29.1. Resumen

   29.2. Pasarelas y "routers"

   29.3. Redes sin cables ("wireless")

   29.4. Bluetooth

   29.5. Puenteado

   29.6. NFS

   29.7. Ejecucion sin disco duro

   29.8. RDSI

   29.9. NIS/YP

   29.10. DHCP

   29.11. DNS

   29.12. NTP

   29.13. Traduccion de direcciones de red

   29.14. El "Superservidor" inetd

   29.15. Linea IP paralela (PLIP)

   29.16. IPv6

   29.17. ATM en FreeBSD 5.X

   Networking avanzado

29.1. Resumen

   Este capitulo cubre algunos de los servicios de red que se usan con mas
   frecuencia en sistemas UNIX(R). Para ser mas concretos este capitulo
   explica como definir, ejecutar, probar y mantener todos los servicios de
   red que utiliza FreeBSD. Se muestran ademas ejemplos de ficheros de
   configuracion que podra utilizar para sus propios quehaceres.

   Despues de leer este capitulo habremos aprendido:

     * Los conceptos basicos de pasarelas y "routers".

     * Como poner en funcionamiento dispositivos IEEE 802.11 y Bluetooth(R).

     * Como configurar FreeBSD para que actue como un "bridge".

     * Como poner en funcionamiento un sistema de ficheros en red con NFS.

     * Como realizar un arranque del sistema por red en maquinas sin disco
       duro.

     * Como ejecutar un servidor de informacion en red para compartir cuentas
       de usuario mediante NIS.

     * Como especificar parametros de configuracion automatica de red
       utilizando DHCP.

     * Como ejecutar un servidor de nombres de dominio.

     * Como sincronizar la hora y la fecha y ejecutar un servidor horario
       utilizando el protocolo NTP.

     * Como ejecutar un servicio de traduccion de direcciones de red.

     * Como gestionar el daemon inetd.

     * Como conectar dos computadoras a traves de PLIP.

     * Como habilitar IPv6 en una maquina FreeBSD.

     * Como configurar ATM sobre FreeBSD 5.X.

   Antes de leer este capitulo deberia usted:

     * Intentar comprender los conceptos basicos de los scripts de /etc/rc.

     * Familiarizarse con la terminologia basica de redes.

29.2. Pasarelas y "routers"

   Escrito por Coranth Gryphon.

   Para que una maquina sea capaz de encontrar otra maquina remota a traves
   de la red debe existir mecanismo que describa como llegar del origen al
   destino. Este mecanismo se demonina routing o encaminamiento. Una "ruta"
   es un par definido de direcciones: una direccion de "destino" y una
   direccion de "pasarela". Este par indica que para llegar a dicho destino
   debe efectuarse una comunicacion previa con dicha pasarela. Exiten tres
   tipos distintos de destinos: maquinas individuales, subredes y "por
   defecto". La "ruta por defecto" se utiliza solamente cuando no se puede
   aplicar ninguna de las otras rutas existentes. El tema de las rutas por
   defecto se tratara mas adelante con mas detalle. Tambien existen tres
   tipos de pasarelas distintas: maquinas individuales, interfaces (tambien
   llamados "enlaces") y direcciones hardware de ethernet (direcciones MAC).

  29.2.1. Ejemplo

   Para ilustrar diferentes aspectos del sistema de encaminamiento veamos el
   siguiente ejemplo obtenido mediante netstat.

 % netstat -r
 Routing tables

 Destination      Gateway            Flags     Refs     Use     Netif Expire

 default          outside-gw         UGSc       37      418      ppp0
 localhost        localhost          UH          0      181       lo0
 test0            0:e0:b5:36:cf:4f   UHLW        5    63288       ed0     77
 10.20.30.255     link#1             UHLW        1     2421
 ejemplo.com      link#1             UC          0        0
 host1            0:e0:a8:37:8:1e    UHLW        3     4601       lo0
 host2            0:e0:a8:37:8:1e    UHLW        0        5       lo0 =>
 host2.ejemplo.com link#1            UC          0        0
 224              link#1             UC          0        0

   Las primeras dos lineas especifican la ruta por defecto (la cual se
   comenta en la siguiente seccion) y la ruta de maquina local.

   La interfaz (columna Netif) que especifica esta tabla de rutas para el
   destino localhost se denomina lo0, y tambien se conoce como el dispositivo
   de " loopback" a de bucle de retorno. Esto viene a decir que el trafico no
   debe entregarse a la red puesto que dicho trafico va destinado a la misma
   maquina que lo origino.

   Lo siguiente que podemos observar son las direcciones que comienzan por
   0:e0:. Son direcciones hardware de Ethernet, llamadas tambien se
   direcciones MAC. FreeBSD identifica automaticamente cualquier maquina
   (test0 en el ejemplo anterior) que se encuentre en la red local y crea una
   ruta del estilo que estamos comentando, para entregar el trafico
   directamente a traves del correspondiente interfaz Ethernet, en este caso
   ed0. Existe tambien un contador (Expire) asociado con este tipo de rutas
   que se usa para borrarlas cuando dicho contador expira. Las rutas para las
   maquinas de nuestra propia red de de area local se crean dinamicamente
   utilizando el protocolo ARP (Address Resolution Protocol o Protocolo de
   Resolucion de Direcciones), que se encarga de averiguar la direccion MAC
   que se corresponde con la direccion IP de la maquina destino.

   FreeBSD tambien utiliza rutas de subred para direccionar la subred local
   (10.20.30.255 es la direccion de broadcast para la subred 10.20.30, y
   ejemplo.com es el nombre de dominio asociado con dicha subred.) La
   notacion link#1 se refiere a la primera tarjeta Ethernet de la maquina. En
   este tipo de redes no se especifica ningun interfaz en el campo de Netif.

   Las rutas de subredes aparecen cuando se asigna una direccion IP a una
   interfaz, utilizando una mascara de red. Tambien se pueden aprender
   dinamicamente utilizando demonios de encaminamiento, como routed. Por
   ultimo estas rutas pueden crearse manualmente de forma explicita; es lo
   que se conoce con el nombre de rutas estaticas.

   La linea de host1 se refiere a nuestra maquina, que el sistema identifica
   por la correspondiente direccion Ethernet de la tarjeta de red. FreeBSD
   sabe que debe utilizar la interfaz de loopback (lo0) en vez de enviar los
   paquetes a a traves de red.

   Las dos lineas que comienzan por host2 son ejemplos del uso de alias de
   ifconfig(8) alias (consultar la seccion sobre Ethernet para averiguar por
   que nos podria interesar hacer esto.) El simbolo => despues de la interfaz
   lo0 especifica que no solo estamos utilizando la interfaz de loopback, si
   no que ademas especifica que se trata de un alias. Estas rutas solo
   aparecen en las maquinas que implementan el alias, el resto de las
   maquinas de la subred local solamente poseeran una linea link#1 para
   dichas rutas.

   La ultima linea (destino de subred 224) trata sobre encaminamiento
   multicast, que cubriremos en otra seccion.

   Finalmente, se pueden observar varios atributos relacionados con las rutas
   en la columna de Flags. A continuacion se muestra una pequena tabla con el
   significado de algunos de esos de los atributos o "flags".

   U Up: La ruta esta activa.                                                 
   H Host: El destino de la ruta es una unica maquina.                        
     Gateway: Envia cualquier cosa para este destino a traves de la pasarela  
   G especificada, la cual decidira como encaminar el paquete hasta que       
     eventualmente se alcance el destino.                                     
   S Static: Esta ruta se configuro manualmente, y no se ha generado de forma 
     automatica por el sistema.                                               
     Clone: Genera una nueva ruta para la maquina a la que nos queremos       
   C conectar basandose en la ruta actual. Este tipo de ruta se utiliza       
     normalmente en redes locales.                                            
   W WasCloned: Indica una ruta que se auto-configuro basandose en una ruta   
     de red de area local con etiqueta Clone.                                 
   L Link: Esta ruta posee referencias a hardware de Ethernet.                

  29.2.2. Rutas por defecto

   Cuando el sistema local necesita realizar una conexion con una maquina
   remota se examina la tabla de rutas para determinar si se conoce algun
   camino para llegar al destino. Si la maquina remota pertenece a una subred
   que sabemos como alcanzar (rutas clonadas) entonces el sistema comprueba
   si se puede conectar utilizando dicho camino.

   Si todos los caminos conocidos fallan al sistema le queda una unica
   opcion: la "ruta por defecto". Esta ruta esta constituida por un tipo
   especial de pasarela (normalmente el unico "router" presente en la red
   area local) y siempre posee el "flag" c en el campo de "flags". En una
   LAN, la pasarela es la maquina que posee conectividad con el resto de las
   redes (sea a traves de un enlace PPP, DSL, cable modem, T1 u otra interfaz
   de red.)

   Si se configura la ruta por defecto en una maquina que esta actuando como
   pasarela hacia el mundo exterior la ruta por defecto sera el "router" que
   se encuentre en posesion del proveedor de servicios de internet (ISP).

   Vamos a examinar un ejemplo que utiliza rutas por defecto. A continuacion
   se muestra una configuracion bastante comun:

   Las maquinas Local1 y Local2 se encuentran en nuestro sitio u
   organizacion. Local1 se conecta con un ISP a traves de una conexion de
   modem PPP. El servidor PPP del ISP se conecta a traves de una red de area
   local a otra pasarela utilizando una interfaz externa.

   Las rutas por defecto para cada una de las maquinas son las siguientes:

    Host  Default Gateway Interface 
   Local2 Local1          Ethernet  
   Local1 T1-GW           PPP       

   Una pregunta bastante frecuente es "?Por que (o como) hacer que la maquina
   T1-GW sea el `router' por defecto para Local1 en vez de que sea el
   servidor del ISP al cual se esta conectando?".

   Recordemos que, como la interfaz PPP esta utilizando una direccion de la
   red local del ISP en nuestro lado de la las rutas para cualquier otra
   maquina en la red local del proveedor se generaran de forma automatica. De
   este ya sabemos el modo de alcanzar la maquina T1-GW, de tal forma que no
   se necesita un paso intermedio para enviar trafico al servidor del ISP.

   Es frecuente utilizar la direccion X.X.X.1 como la direccion de la
   pasarela en la red local. Siguiendo con el ejemplo anterior, si nuestro
   espacio de direccionamiento local fuera la clase C 10.20.30 y nuestro ISP
   estuviera utilizando 10.9.9 las rutas por defecto serian:

                Host                 Default Route    
   Local2 (10.20.30.2)            Local1 (10.20.30.1) 
   Local1 (10.20.30.1, 10.9.9.30) T1-GW (10.9.9.1)    

   Se puede especificar facilmente la entrada de la ruta por defecto
   utilizando el fichero /etc/rc.conf. En nuestro ejemplo en la maquina
   Local2, se anadio la siguiente linea en dicho fichero:

 defaultrouter="10.20.30.1"

   Tambien se puede hacer directamente desde la linea de ordenes mediante
   route(8):

 # route add default 10.20.30.1

   Para obtener mas informacion sobre la manipulacion de tablas de rutas se
   ruega consultar la pagina de manual route(8).

  29.2.3. Maquinas con doble pertenencia (Dual Homed Hosts)

   Existe otro tipo de configuracion que debemos describir y que se produce
   cuando una maquina se situa en dos redes distintas al mismo tiempo.
   Tecnicamente hablando cualquier maquina que actua como pasarela (en el
   caso anterior utilizando un enlace de PPP) pertenece al tipo de maquinas
   con doble pertenencia, pero normalmente el termino solo se aplica para
   describir maquinas que se encuentran directamente conectadas con dos redes
   de area local.

   En un caso la maquina posee dos tarjetas de red Ethernet, cada una de
   ellas con una direccion de red independiente. En otro caso la maquina
   puede tener solo una tarjeta de red, pero utilizar " aliasing"
   (ifconfig(8)). El primer caso se utiliza cuando se necesita usar dos redes
   Ethernet al mismo tiempo mientras que el segundo caso se utiliza cuando se
   dispone de un unico segmento de red fisico pero se han definido dos redes
   logicas distintas

   En cualquier caso la tabla de rutas se construye de tal forma que cada
   subred sepa que la maquina es la pasarela definida definida ("inbound
   route") para la otra subred. Esta configuracion en la que la maquina actua
   como "router" entre las dos subredes se usa a menudo cuando queremos
   implementar filtrado de paquetes o cortafuegos seguridad en un sentido o
   en ambos.

   Si queremos que dicha maquina encamine paquetes entre las dos interfaces
   es necesario decirle a FreeBSD que active dicha funcionalidad. En la
   siguiente seccion se explica como hacerlo.

  29.2.4. Construccion de un "route"

   Un "router" de red, tambien llamado pasarela o "route", es simplemente un
   sistema que reenvia paquetes desde un interfaz hacia otro interfaz. Los
   estandares Internet y el sentido comun aplicado a la ingenieria de redes
   impiden que FreeBSD incluya por defecto esta caracteristica. Se puede
   activar cambiando a YES el valor de la siguiente variable en el fichero
   rc.conf(5):

 gateway_enable=YES          # Set to YES if this host will be a gateway

   Esta opcion modificara la variable de sysctl(8) net.inet.ip.forwarding al
   valor 1. Si en algun momento se necesita detener el "router" de forma
   temporal basta con asignar a dicha variable el valor 0. Consulte sysctl(8)
   para mas detalles.

   Nuestro recien activado "router" necesita rutas para saber a donde debe
   enviar el trafico recibido. Si nuestra red es na se pueden definir rutas
   estaticas. FreeBSD incluye por defecto el daemon de encaminamiento BSD,
   routed(8), que admite RIP (version 1 y version 2) e IRDP. El paquete
   net/zebra le permitira usar otros protocolos de encaminamiento dinamico
   como BGP v4, OSPF v2 y muchos otros. En caso de necesitar caracteristicas
   avanzadas de gestion puede usted recurrir a productos comerciales como
   GateD(R).

   Incluso cuando FreeBSD se configura del modo descrito no se cumple
   completamente con los estandares de Internet respecto a los "routers".
   Bastara no obstante para poder usarse.

  29.2.5. Configuracion de rutas estaticas

   Escrito porAl Hoang.

    29.2.5.1. Configuracion manual

   Vamos a suponer que tenemos la siguiente topologia de red:

     INTERNET
       | (10.0.0.1/24) Router por defecto para Internet
       |
       |Interfaz xl0
       |10.0.0.10/24
    +------+
    |      | RouterA
    |      | (pasarela FreeBSD)
    +------+
       | Interfaz xl1
       | 192.168.1.1/24
       |
   +--------------------------------+
    Red Interna 1       | 192.168.1.2/24
                        |
                    +------+
                    |      | RouterB
                    |      |
                    +------+
                        | 192.168.2.1/24
                        |
                      Red Interna 2
        

   En este escenario RouterA es nuestra maquina FreeBSD que actua como
   pasarela para acceder al resto de internet. Tiene una ruta por defecto que
   apunta a 10.0.0.1 que le permite conectarse con el mundo exterior. Vamos a
   suponer tambien que RouterB se encuentra configurado de forma adecuada que
   sabe como llegar a cualquier sitio que necesite. Esto es sencillo viendo
   nuestra topologia de red, basta con anadir una ruta por defecto en la
   maquina RouterB utilizando 192.168.1.1 como "router".

   Si observamos la tabla de rutas de RouterA veremos algo como lo siguiente:

 % netstat -nr
 Routing tables

 Internet:
 Destination        Gateway            Flags    Refs      Use  Netif  Expire
 default            10.0.0.1           UGS         0    49378    xl0
 127.0.0.1          127.0.0.1          UH          0        6    lo0
 10.0.0/24          link#1             UC          0        0    xl0
 192.168.1/24       link#2             UC          0        0    xl1

   Con la tabla de rutas actual RouterA no es capaz de alcanzar la red
   interna 2. Esto es asi porque no posee ninguna ruta para la red
   192.168.2.0/24. Una forma de mitigar esto es anadir de forma manual la
   ruta que falta. La siguiente orden anade la red interna 2 a la tabla de
   rutas de la maquina RouterA utilizando 192.168.1.2 como siguiente salto:

 # route add -net 192.168.2.0/24 192.168.1.2

   Ahora RouterA puede alcanzar cualquier maquina en la red 192.168.2.0/24.

    29.2.5.2. Como hacer la configuracion persistente

   El ejemplo anterior es perfecto en tanto que resuelve el problema de
   encaminamiento entre redes pero existe un problema. La informacion de
   encaminamiento desaparecera si se reinicia la maquina. La forma de
   evitarlo es anadir las rutas estaticas a /etc/rc.conf:

 # Anade la red interna 2 como una ruta estatica
 static_routes="redinterna2"
 route_internalnet2="-net 192.168.2.0/24 192.168.1.2"

   La variable de configuracion static_routes es una lista de cadenas
   separadas por espacios. Cada cadena identifica un nombre para la ruta que
   se desea definir. En el ejemplo anterior solamente se dispone de una
   cadena dentro de la variable static_routes. Esta cadena es redinterna2. A
   continuacion se anade otra variable de configuracion denominada
   route_redinterna2 donde se escriben todos los parametros de configuracion
   que normalmente utilizariamos normalmente utilizariamos con route(8). En
   el ejemplo que estamos comentando se utilizaria la siguiente orden:

 # route add -net 192.168.2.0/24 192.168.1.2

   De tal forma que la variable deberia contener "-net 192.168.2.0/24
   192.168.1.2".

   Como ya se ha comentado anteriormente podemos especificar mas de una
   cadena en la variable static_routes. Esto nos permite crear varias rutas
   estaticas. Las siguientes linas muestran un ejemplo donde se anaden rutas
   estaticas para las redes 192.168.0.0/24 y 192.168.1.0/24 en un
   "router"imaginario:

 static_routes="red1 red2"
 route_red1="-net 192.168.0.0/24 192.168.0.1"
 route_red2="-net 192.168.1.0/24 192.168.1.1"

  29.2.6. Propagacion de rutas

   Ya hemos comentado como se definen las rutas para el mundo exterior pero
   no hemos comentado nada sobre como haremos que el mundo exterior nos
   encuentre a nosotros.

   Tambien hemos aprendido que las tablas de rutas se pueden construir de tal
   forma que un grupo de trafico (perteneciente a un espacio de direcciones
   determinado) se reenvie a una maquina especifica de la red, que se
   encargara de reenviar los paquetes hacia adentro.

   Cuando se obtiene un espacio de direcciones para la organizacion el
   proveedor de servicios modifica sus tablas de rutas para que todo el
   trafico para nuestra subred se encamine a traves del enlace PPP hasta
   alcanzarnos. Pero ?como conocen las organizaciones dispersas a traves del
   pais que deben enviar los paquetes dirigidos a nosotros hacia nuestro ISP?

   Existe un sistema (muy similar al sistema de nombres de dominio, DNS) que
   se encarga de controlar todos los espacios de direcciones que se
   encuentran actualmente repartidos y que ademas define sus puntos de
   conexion con el "backbone" de internet. El "backbone" esta formado por las
   principales lineas de de comunicacion que se encargan de transportar el
   trafico de internet a traves del pais y del mundo entero. Cada maquina del
   "backbone" dispone de una copia de un conjunto maestro de tablas de rutas
   gracias a las cuales pueden dirigir el trafico para una red particular
   hacia una determinada red de transporte de dicho "backbone". Una vez en la
   red de transporte adecuada el trafico se encamina a traves de un numero
   indeterminado de redes de proveedores de servicio hasta que se alcanza la
   red de destino final.

   Una de las tareas que debe realizar el proveedor de servicio servicio
   consiste en anunciarse a las organizaciones del consiste en anunciarse a
   las organizaciones del "backbone" como el punto de conexion principal (y
   por tanto como el camino de entrada) para alcanzar las redes de sus
   clientes. Este proceso se denomina propagacion de rutas.

  29.2.7. Solucion de problemas

   En algunas ocasiones surgen problemas con la propagacion de las rutas y
   algunas organizaciones son incapaces de conectarse con nuestra subred.
   Quiza la orden mas util para averiguar donde se esta interrumpiendo el
   sistema de encaminamiento sea traceroute(8). Se puede usar tambien cuando
   somos nosotros los que no podemos alcanzar alguna red externa (por ejemplo
   cuando ping(8) falla).

   traceroute(8) se ejecuta pasandole como parametro el nombre de la maquina
   remota a la que nos queremos conectar. Esta orden muestra por pantalla las
   maquinas que actuan de pasarela a lo largo del camino. El proceso termina
   bien porque se alcanza el destino o bien porque algun "router" intermedio
   no puede conectarse con el siguiente salto, o lo desconoce.

   Si quiere saber mas sobre esto consulte la pagina man de traceroute(8).

  29.2.8. Rutas multicast

   FreeBSD soporta tanto aplicaciones multicast como encaminamiento multicast
   de forma nativa. Las aplicaciones multicast no necesitan ninguna
   configuracion especial en FreeBSD; estas aplicaciones se ejecutan tal
   cual. El encaminamiento multicast necesita para ser usado que se compile
   dicho soporte en el nucleo de FreeBSD:

 options MROUTING

   Se debe configurar ademas el daemon de encaminamiento multicast,
   mrouted(8), para establecer tuneles y ejecutar DVMRP utilizando
   /etc/mrouted.conf. Se pueden encontrar mas detalles sobre como realizar
   una configuracion de multicast en mrouted(8).

29.3. Redes sin cables ("wireless")

   Escrito por Eric Anderson.

  29.3.1. Introduccion

   Puede resultar muy util el ser capaz de utilizar una computadora sin la
   molestia de tener un cable de red colgando de la maquina en todo momento.
   FreeBSD puede utilizarse como un cliente de "wireless" e incluso como un
   "punto de acceso".

  29.3.2. Modos de operacion Wireless

   Existen dos formas diferentes de configurar dispositivos wireless 802.11:
   BSS e IBSS.

    29.3.2.1. Modo BSS

   El modo BSS es el que se utiliza normalmente. Este modo tambien se
   denomina modo infraestructura. En esta configuracion se conectan un
   determinado numero de puntos de acceso a una red cableada. Cada red Cada
   red "wireless" posee su propio nombre. Este nombre es el SSID de la red.

   Los clientes "wireless" se conectan a estos puntos de acceso. El estandar
   IEEE 802.11 define el protocolo que se utiliza para realizar esta
   conexion. Un cliente "wireless" puede asociarse con una determinada red
   "wireless" especificando el SSID. Un cliente "wireless" tambien puede
   asociarse a cualquier red que se encuentre disponible; basta con no
   especificar ningun SSID.

    29.3.2.2. Modo IBSS

   El modo IBSS, tambien conocido como modo ad-hoc, se ha disenado para
   facilitar las conexiones punto a punto. En realidad existen dos tipos
   distintos de modos ad-hoc. Uno es el modo IBSS, tambien conocido como modo
   ad-hoc o modo ad-hoc del IEEE. Este modo se encuentra especificado en el
   estandar IEEE 802.11. El segundo tipo se denomina modo ad-hoc de
   demostracion o modo ad-hoc de Lucent (y algunas veces, tambien se le llama
   simplemente modo ad-hoc, lo cual es bastante confuso). Este es el modo de
   funcionamiento antiguo, anterior al estandar 802.11, del modo ad-hoc
   deberia utilizarse solo en instalaciones propietarias. No profundizaremos
   mas sobre estos modos de funcionamiento.

  29.3.3. Modo infraestructura

    29.3.3.1. Puntos de acceso

   Los puntos de acceso son dispositivos de red "wireless" que funcionan de
   forma equivalente a los "hubs" o concentradores, permitiendo que varios
   clientes " wireless" se comuniquen entre si. A menudo se utilizan varios
   puntos de acceso para cubrir un area determinada como una casa, una
   oficina u otro tipo de localizacion delimitada.

   Los puntos de acceso poseen tipicamente varias conexiones de red: la
   tarjeta "wireless" y una o mas tarjetas Ethernet que se utilizan para
   comunicarse con el resto de la red.

   Los puntos de acceso se pueden comprar como tales pero tambien se puede
   configurar un sistema FreeBSD para crear nuestro propio punto de acceso
   "wireless" utilizando un determinado tipo de tarjetas "wireless" que
   poseen tales capacidades de configuracion. Existe una gran cantidad de
   fabricantes de hardware que distribuyen puntos de acceso y tarjetas de red
   "wireless", aunque las capacidades de unos y otras varin.

    29.3.3.2. Construccion de un punto de acceso basado en FreeBSD

      29.3.3.2.1. Requisitos

   Para crear nuestro propio punto de acceso con FreeBSD debemos utilizar un
   determinado tipo de tarjeta "wireless". Por el momento, solo las tarjetas
   con el chip Prism nos permiten hacer un punto de acceso. Tambien vamos a
   necesitar una tarjeta para red cableada que sea soportada por el sistema
   (esto no es muy complicado dada la ingente cantidad de dispositivos de
   este tipo que funcionan en FreeBSD). Para este ejemplo vamos a suponer que
   queremos puentear (bridge(4)) todo el trafico entre la red cableada y la
   red inalambrica.

   El uso como punto de acceso "wireless" (tambien denominado hostap)
   funciona mejor con determinadas versiones del " firmware". Las tarjetas
   con chip Prism2 deben disponer de la version 1.3.4 (o superior) del "
   firmware". Los chips Prism2.5 y Prism3 deben disponer de la version 1.4.9
   o superior del "firmware". Las versiones mas antiguas de estos "
   firmwares" pueden no funcionar correctamente. A dia de hoy la unica forma
   de actualizar el " firmware" de las tarjetas es usando las herramientas
   que proporciona el fabricante para Windows(R).

      29.3.3.2.2. Puesta en marcha del sistema

   Primero debemos asegurarnos de que el sistema reconoce la tarjeta
   "wireless":

 # ifconfig -a
 wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
         inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
         ether 00:09:2d:2d:c9:50
         media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
         status: no carrier
         ssid ""
         stationname "nodo Wireless FreeBSD"
         channel 10 authmode OPEN powersavemode OFF powersavesleep 100
         wepmode OFF weptxkey 1

   No se preocupe si no entiende algo de la configuracion anterior, lo
   importante es asegurarse de que el sistema muestra algo parecido, lo cual
   nosindicara que la tarjeta "wireless" ha sido correctamente reconocida por
   FreeBSD. Si el interfaz inalambrico no es reconocido correctamente y se
   esta utilizando una tarjeta PC Card consulte pccardc(8) y pccardd(8), en
   las que tiene mucha informacion al respecto.

   A continuacion, para que podamos disponer de un "bridge" debera cargar el
   modulo del kernel bridge(4) por el sencillo procedimiento de ejecutar la
   siguiente orden:

 # kldload bridge

   No deberia aparecer mensaje de error alguno al ejecutar dicha orden. Si
   apareciera alguno quizas deba compilar el kernel del sistema con bridge(4)
   incluido. La seccion Bridging de este manual incluye informacion abundante
   para llevar a buen puerto esa tarea.

   Una vez que tenemos el soporte de "bridging" cargado debemos indicar a
   FreeBSD que interfaces se desean puentear. Para ello emplearemos
   sysctl(8):

 # sysctl net.link.ether.bridge=1
 # sysctl net.link.ether.bridge_cfg="wi0,xl0"
 # sysctl net.inet.ip.forwarding=1

   En FreeBSD 5.2-RELEASE y posteriores se deben emplear las siguientes
   opciones en lugar de las anteriormente expuestas:

 # sysctl net.link.ether.bridge.enable=1
 # sysctl net.link.ether.bridge.config="wi0,xl0"
 # sysctl net.inet.ip.forwarding=1

   Ahora es el momento de configurar la tarjeta de red inalambrica. La
   siguiente orden convierte la tarjeta en un punto de acceso:

 # ifconfig wi0 ssid mi_red channel 11 media DS/11Mbps mediaopt hostap up stationname "PA FreeBSD"
         

   La linea de ifconfig(8) levanta el interfaz wi0, configura el SSID con el
   valor de mi_red y tambien el nombre de la estacion como FreeBSD. La opcion
   media DS/11Mbps configura la tarjeta a 11Mbps. Esto es necesario para que
   cualquier valor que se necesite asignar a mediaopt surta efecto. La opcion
   mediaopt hostap situa el interfaz en modo punto de acceso. La opcion
   channel 11 configura la tarjeta para que use el canal de radio numero 11.
   En wicontrol(8) encontraraa rangos de canales validos para varios dominios
   regulatorios. Por favor, tenga en cuenta que no todos los canales son
   legales en todos los paises.

   Despues de esto deberiamos disponer de un punto de acceso completamente
   funcional y en ejecucion. Le animamos a consultar wicontrol(8),
   ifconfig(8) y wi(4) para mass informacion.

   Tambien le recomemdamos leer la seccion sobre cifrado que econtrara mas
   adelante.

      29.3.3.2.3. Informacion de estado

   Una vez que el punto de acceso estaconfigurado resulta interesante poder
   obtener informacion acerca de los clientes que esten asociados. La persona
   encargada de la administracion del punto de acceso puede ejecutar cuando
   estime oportuno lo siguiente:

 # wicontrol -l
 1 station:
 00:09:b7:7b:9d:16  asid=04c0, flags=3<ASSOC,AUTH>, caps=1<ESS>, rates=f<1M,2M,5.5M,11M>, sig=38/15

   Lo que aqui se muestra indica que hay una unica estacion asociada y nos
   suministra sus parametros. Los valores de senal que se muestran se deben
   tomar solo como indicaciones aproximadas de la fuerza de dicha senal. Su
   traduccion a dBm u otras unidades varia segun la version del " firmware"
   de la tarjeta que se use.

    29.3.3.3. Clientes

   Un cliente "wireless" es un sistema que se comunica con un punto de acceso
   o directamente con otro cliente "wireless".

   Generalmente los clientes "wireless" solo poseen un dispositivo de red: la
   tarjeta de red inalambrica.

   Existen varias formas de configurar un cliente " wireless" basadas en los
   distintos modos inalambricos, normalmente reducidos a BSS (o modo
   infraestructura, que requiere de un punto de acceso) y el modo IBSS (modo
   ad-hoc, o modo punto a punto). En nuestro ejemplo usaremos el mas famoso
   de ambos, el BSS, para comunicarnos con un punto de acceso.

      29.3.3.3.1. Requisitos

   Solamente existe un requisito real para configurar un sistema FreeBSD como
   cliente inalambrico: usar una tarjeta de red inalambrica soportada por el
   sistema.

      29.3.3.3.2. Ejecucion de un cliente inalambrico FreeBSD

   Para utilizar una red inalambrica se necesitan conocer algunos conceptos
   basicos de redes de redes wireless. En nuestro ejemplo queremos
   conectarnos a la red inalambrica mi_red y queremos hacerlo con el soporte
   de cifrado desactivado.

  Nota:

   En este ejemplo no se utiliza cifrado, lo cual resulta ser bastante
   peligroso. En la proxima seccion aprenderemos como activar el sistema de
   cifrado comun el los dispositivos inalambricos, por que resulta importante
   hacerlo y por que algunas tecnologias de cifrado no son suficientes para
   protegernos completamente.

   Asegurese de que FreeBSD reconoce su tarjeta de red inalambrica:

 # ifconfig -a
 wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
         inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
         ether 00:09:2d:2d:c9:50
         media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
         status: no carrier
         ssid ""
         stationname "FreeBSD Wireless node"
         channel 10 authmode OPEN powersavemode OFF powersavesleep 100
         wepmode OFF weptxkey 1

   A continuacion debemos especificar los parametros correctos para nuestra
   red:

 # ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid mi_red

   Sustituya 192.168.0.20 y 255.255.255.0 con una direccion IP y mascara de
   red que se adecuen con el espacio de direccionamiento de la red cableada.
   Recordemos que nuestro punto de acceso esta puenteando la red inalambrica
   y la red de cable, de modo que para el resto de dispositivos de la red el
   cliente inalabrico se muestra como un elemento mas de la red cableada.

   Llegados a este punto deberiamos poder hacer ping a las maquinas de la red
   cableada como si estuvieramos compartiendo el mismo enlace fisico
   cableado.

   Si se presentan problemas con la conexion inalambrica se puede comprobar
   si la tarjeta " wireless" se encuentra correctamente asociada (conectada)
   con el punto de acceso:

 # ifconfig wi0

   eberia devolver algun tipo de informacion entre la que deberiamos observar
   la siguiente linea:

 status: associated

   Si no aparece la palabra associated puede ser que nos encontremos fuera de
   la cobertura proporcionada por el punto de acceso o puede ser que
   necesitemos activar el cifrado, aunque estos no son los unicos problemas
   con los que nos podemos encontrar.

    29.3.3.4. Cifrado

   El cifrado, tambien llamado codificacion, de una red inalambrica es un
   proceso importante porque, a diferencia de lo que ocurre con las redes
   cableadas convencionales, las redes inalambricas no se pueden restringir a
   un espacio fisico determinado. Los datos que viajan a traves de ondas de
   radio se difunden a traves de las paredes y alcanzan a los vecinos mas
   cercanos. Aqui es donde entra en en juego el sistema de cifrado. El
   cifrado se emplea para evitar que cualquiera pueda examinar los datos
   enviados a traves del aire.

   Los dos metodos mas comunes para realizar el cifrado de datos entre el
   cliente y el punto de acceso son WEP e ipsec(4).

      29.3.3.4.1. WEP

   WEP son las siglas de Wired Equivalency Protocol. WEP es un un intento de
   crear redes inalambricas al menos tan seguras omo las redes cableadas o al
   menos de seguridad equivalente a dichas redes. Por desgracia el sistema
   WEP es debil y resulta bastante sencillo de romper. Esto significa que
   cuando se transmite informacion de caracter critico no se debe confiar
   unicamente en este sistema de cifrado.

   No obstante es mejor que no utilizar nada; puede activar WEP en el sistema
   que hace de punto de acceso mediante:

 # ifconfig wi0 inet up ssid
               mi_red wepmode on wepkey
               0x1234567890 media DS/11Mbps
               mediaopt hostap

   y en un cliente inalambrico mediante la siguiente orden:

 # ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid mi_red wepmode on wepkey 0x1234567890

   Por favor, tenga un poco de sentido comun y reemplace la clave
   0x1234567890 por otra clave menos obvia.

      29.3.3.4.2. IPsec

   ipsec(4) es una herramienta mas robusta y potente para cifrar datos que se
   mueven a traves de una red. Es el mecanismo mas conveniente para asegurar
   los datos de una red inalambrica. Tiene mas informacion sobre el protocolo
   ipsec(4) y como utilizarlo en la seccion IPsec de este manual.

    29.3.3.5. Herramientas

   No hay muchas herramientas disponibles si se quiere depurar y monitorizar
   redes inalambricas pero en el siguiente apartado mostraremos como utilizar
   algunas de ellas.

      29.3.3.5.1. El paquete bsd-airtools

   El paquete bsd-airtools es un conjunto muy completo de herramientas
   "wireless" que se pueden utilizar para multitud de tareas, entre las
   cuales podemos citar citar el desciframiento de claves WEP, deteccion de
   puntos de de acceso, monitorizacion de la senal de radio, etc.

   El paquete bsd-airtools se puede instalar como "port" desde
   net/bsd-airtools. La informacion relacionada con los "ports" puede
   encontrarse en la seccion Capitulo 4, Instalacion de aplicaciones:
   <<packages>> y ports de este manual.

   El programa dstumbler es una herramienta que permite descubrir puntos de
   acceso y entre otras cosas muestra de forma grafica la relacion senal /
   ruido del enlace. Si se experimentan problemas para acceder a un
   determinado punto de acceso dstumbler puede ser muy util.

   Para probar la seguridad de la red inalambrica se puede usar "dweputils",
   concretamente las ordenes dwepcrack, dwepdump y dwepkeygen. Estas ordenes
   permiten determinar hasta que punto la seguridad que ofrece WEP es
   suficiente para nuestras necesidades.

      29.3.3.5.2. Las utilidades wicontrol, ancontrol y raycontrol

   Mediante estas herramientas se puede controlar el comportamiento de la
   tarjeta de red inalambrica. En los ejemplos anteriores se ha utilizado
   wicontrol(8) debido a que la tarjeta de red del ejemplo utiliza el
   interfaz wi0. Si se posee una tarjeta "wireless" de Cisco dicha tarjeta se
   mostrara en el sistema mediante el interfaz an0 y por lo tanto la orden
   equivalente que se debe usar sera ancontrol(8).

      29.3.3.5.3. ifconfig

   Con ifconfig(8) se puede utilizar unas cuantas de las opciones que se
   pueden usar con wicontrol(8), pero no obstante no posee todas las
   funcionalidades que proporciona wicontrol(8). Se recomienda leer
   ifconfig(8) para conocer los detalles de los parametros y opciones que
   admite.

    29.3.3.6. Tarjetas de Red inalambricas soportadas

      29.3.3.6.1. Puntos de acceso

   Las unicas tarjetas que soportan el modo de funcionamiento funcionamiento
   BSS (pueden funcionar como puntos de acceso) son los dispositivos basados
   en el chip Prism 2, 2.5 o 3. Consulte wi(4) para ver una lista completa de
   ellos.

      29.3.3.6.2. Clientes

   FreeBSD soporta casi todas las tarjetas inalambricas 802.11b 802.11b que
   se encuentran actualmente en el mercado. La mayoria de las tarjetas
   basadas en los chips Prism, Spectrum24, Spectrum24, Hermes, Aironet y
   Raylink tambien funcionan en modo IBSS (modos ad-hoc, punto a punto y
   BSS).

29.4. Bluetooth

   Escrito por Pav Lucistnik.

  29.4.1. Introduccion

   Bluetooth es una tecnologia inalambrica que opera en banda de 2.4 GHz
   (donde no se necesita licencia). Se trata de una tecnologia pensada para
   la creacion de redes de ambito personal (de cobertura reducida,
   normalmente de unos 10 metros). Las redes se suelen construir en modo
   "ad-hoc" utilizando dispositivos heterogeneos como telefonos moviles,
   dispositivos manuales ("handhelds") y computadoras portatiles. A
   diferencia de otras tecnologias inalambricas como Wi-Fi, Bluetooth ofrece
   perfiles de servicio mas detallados; por ejemplo un perfil para actuar
   como un servidor de ficheros basado en FTP, para la difusion de ficheros
   ("file pushing"), para el transporte de voz, para la emulacion de linea
   serie y muchos mas.

   La pila de Bluetooth en FreeBSD se implementa utilizando el entorno de
   Netgraph (vease netgraph(4)). La mayoria de los dispositivos USB Bluetooth
   se pueden utilizar mediante el controlador ng_ubt(4). Los dispositivos
   Bluetooth basados en el chip Broadcom BCM2033 estan soportados mediante
   los controladores ubtbcmfw(4) y ng_bt3c(4). Los dispositivos Bluetooth
   basados en la interfaz serie o de Rayos Infrarrojos (UART) se controlan
   mediante sio(4), ng_h4(4) y hcseriald(8). Este capitulo describe el uso de
   dispositivos Bluetooth USB. El soporte para Bluetooth se encuentra en las
   versiones de FreeBSD 5.0 y posteriores.

  29.4.2. Instalacion del dispositivo

   Por defecto los controladores de los dispositivos Bluetooth se encuentran
   disponibles como modulos del kernel. Antes de enchufar el dispositivo
   Bluetooth se debe cargar el modulo correspondiente dentro del nucleo.

 # kldload ng_ubt

   Si el dispositivo Bluetooth se encuentra conectado cuando el sistema
   arranca se debe cargar el modulo modificando a tal efecto el fichero
   /boot/loader.conf.

 ng_ubt_load="YES"

   Al conectar el dispositivo Bluetooth aparecera en la consola (o en syslog)
   la siguiente informacion:

 ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2
 ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
 ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3,
       wMaxPacketSize=49, nframes=6, buffer size=294

   Se debe copiar /usr/share/examples/netgraph/bluetooth/rc.bluetooth a algun
   lugar mas conveniente, por ejemplo /etc/rc.bluetooth. Este script se usa
   para ejecutar y detener la pila Bluetooth del sistema. Se suele recomendar
   quitar la pila antes de desenchufar el dispositivo pero si no se hace no
   deberia producirse ningun desastre. Cuando se arranca la pila aparece un
   mensaje similar a este:

 # /etc/rc.bluetooth start ubt0
 BD_ADDR: 00:02:72:00:d4:1a
 Features: 0xff 0xff 0xf 00 00 00 00 00
 <3-Slot> <5-Slot> <Encryption> <Slot offset>
 <Timing accuracy> <Switch> <Hold mode> <Sniff mode>
 <Park mode> <RSSI> <Channel quality> <SCO link>
 <HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD>
 <Paging scheme> <Power control> <Transparent SCO data>
 Max. ACL packet size: 192 bytes
 Number of ACL packets: 8
 Max. SCO packet size: 64 bytes
 Number of SCO packets: 8

  29.4.3. Interfaz de la controladora de la maquina (HCI)

   La interfaz de la Controladora de la Maquina (Host Controller Interface)
   proporciona una interfaz de ordenes para la controladora de banda base y
   para el gestor de enlace, y permite acceder al estado del hardware y a los
   registros de control. Esta interfaz proporciona una capa de acceso
   homogenea para todos los dispositivos Bluetooth de banda base. La capa HCI
   de la maquina intercambia ordenes y datos con el firmware del HCI presente
   en el dispositivo Bluetooth. El driver de la capa de transporte de la
   controladora de la maquina (es decir, el driver del bus fisico)
   proporciona ambas capas de HCI la posibilidad de intercambiar informacion
   entre ellas.

   Se crea un nodo Netgraph de tipo HCI para cada dispositivo Bluetooth. El
   nodo Netgraph HCI se conecta normalmente con el nodo que representa el
   controlador del dispositivo Bluetooth de la maquina (sentido de bajada) y
   con el nodo Netgraph L2CAP en el sentido de subida. Todas las operaciones
   HCI se realizan sobre el nodo Netgraph HCI y no sobre el el nodo que
   representa al dispositivo. El nombre por defecto para el nodo HCI es
   "devicehci". Para obtener mas detalles, por favor consulte la pagina del
   manual de ng_hci(4).

   Una de las tareas mas importantes que se deben realizar es el
   descubrimiento automatico de otros dispositivos Bluetooth que se
   encuentren dentro del radio de cobertura. Esta operacion se denomina en
   ingles inquiry (consulta). Esta operacion o otras operaciones HCI
   relacionadas se realizan mediante la utilidad hccontrol(8). El siguiente
   ejemplo muestra como descubrir dispositivos en pocos segundos. Tenga
   siempre presente que un dispositivo remoto solo contesta a la consulta si
   se encuentra configurado en modo descubrimiento (discoverable mode).

 % hccontrol -n ubt0hci inquiry
 Inquiry result, num_responses=1
 Inquiry result #0
        BD_ADDR: 00:80:37:29:19:a4
        Page Scan Rep. Mode: 0x1
        Page Scan Period Mode: 00
        Page Scan Mode: 00
        Class: 52:02:04
        Clock offset: 0x78ef
 Inquiry complete. Status: No error [00]

   BD_ADDR es la direccion identificativa unica del dispositivo Bluetooth,
   similar a las direcciones MAC de las tarjetas Ethernet. Esta direccion se
   necesita para transmitir otro tipo de informacion a otros dispositivos. Se
   puede asignar un nombre mas significativo para los humanos en la variable
   BD_ADDR. El fichero /etc/bluetooth/hosts contiene informacion relativa a
   los dispositivos Bluetooth conocidos. El siguiente ejemplo muestra como
   obtener un nombre significativo para los humanos que fue asignado a un
   dispositivo remoto:

 % hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4
 BD_ADDR: 00:80:37:29:19:a4
 Name: Pav's T39

   Si se realiza una consulta (inquiry) sobre el dispositivo Bluetooth
   remoto, dicho dispositivo identificara nuestro computador como
   "nombre.de.su.sistema (ubt0)". El nombre asignado al dispositivo local se
   puede modificar en cualquier momento.

   El sistema Bluetooth proporciona una conexion punto a punto (con solo dos
   unidades Bluetooth involucradas) o tambien una conexion punto multipunto.
   En el ultimo caso, la conexion se comparte entre varios dispositivos
   Bluetooth. El siguiente ejemplo muestra como obtener una lista de las
   conexiones de banda base activas en el dispositivo local:

 % hccontrol -n ubt0hci read_connection_list
 Remote BD_ADDR    Handle Type Mode Role Encrypt Pending Queue State
 00:80:37:29:19:a4     41  ACL    0 MAST    NONE       0     0 OPEN

   Resulta util disponer de un manejador de la conexion cuando se necesita
   terminar la conexion de banda base. Es importante recalcar que normalmente
   no es necesario realizar esta terminacion de forma manual. La pila
   Bluetooth puede concluir automaticamente las conexiones de banda base que
   se encuentren inactivas.

 # hccontrol -n ubt0hci disconnect 41
 Connection handle: 41
 Reason: Connection terminated by local host [0x16]

   Se ruega consultar la salida de la orden hccontrol help para obtener un
   listado completo de las ordenes HCI disponibles. La mayoria de estas
   ordenes no requiren privilegios de superusuario.

  29.4.4. Protocolo de adaptacion y de control de enlace a nivel logico (L2CAP)

   El protocolo L2CAP (Logical Link Control and Adaptation Protocol)
   proporciona servicios de datos tanto orientados a conexion como no
   orientados a conexion a los protocolos de las capas superiores, junto con
   facilidades de multiplexacion y de segmentacion y reensamblaje. L2CAP
   permite que los protocolos de capas superiores puedan transmitir y recibir
   paquetes de datos L2CAP de hasta 64 kilobytes de longitud.

   L2CAP se basa en el concepto de canales. Un canal es una conexion logica
   que se situa sobre la conexion de banda base. Cada canal se asocia a un
   unico protocolo. Cada paquete L2CAP que se recibe a un canal se redirige
   al protocolo superior correspondiente. Varios canales pueden operar sobre
   la misma conexion de banda base, pero un canal no puede tener asociados
   mas de un protocolo de alto nivel.

   Para cada dispositivo Bluetooth se cre un unico nodo Netgraph de tipo
   l2cap. El nodo L2CAP se conecta normalmente conectado al nodo Netgraph HCI
   (hacia abajo) y con nodos Bluetooth tipo "sockets" hacia arriba. El nombre
   por defecto para el nodo Netgraph L2CAP es "devicel2cap". Para obtener mas
   detalles se ruega consultar la pagina del manual ng_l2cap(4).

   l2ping(8) le sera muy util para hacer ping a otros dispositivos. Algunas
   implementaciones de Bluetooth no devuelven todos los datos que se envian,
   de tal forma que el valor 0 bytes que se observa a continuacion es normal:

 # l2ping -a 00:80:37:29:19:a4
 0 bytes from 0:80:37:29:19:a4 seq_no=0 time=48.633 ms result=0
 0 bytes from 0:80:37:29:19:a4 seq_no=1 time=37.551 ms result=0
 0 bytes from 0:80:37:29:19:a4 seq_no=2 time=28.324 ms result=0
 0 bytes from 0:80:37:29:19:a4 seq_no=3 time=46.150 ms result=0

   La herramienta l2control(8) se utiliza para realizar varias operaciones
   sobre los nodos L2CAP. Este ejemplo muestra como obtener la lista de
   conexiones logicas (canales) y la lista de conexiones de banda base
   (fisica) que mantiene el dispositivo local:

 % l2control -a 00:02:72:00:d4:1a read_channel_list
 L2CAP channels:
 Remote BD_ADDR     SCID/ DCID   PSM  IMTU/ OMTU State
 00:07:e0:00:0b:ca    66/   64     3   132/  672 OPEN
 % l2control -a 00:02:72:00:d4:1a read_connection_list
 L2CAP connections:
 Remote BD_ADDR    Handle Flags Pending State
 00:07:e0:00:0b:ca     41 O           0 OPEN

   Otra herramienta de diagnostico interesante es btsockstat(1). Realiza un
   trabajo similar a la orden netstat(1), pero en este caso para las
   estructuras de datos relacionadas con el sistema Bluetooth. A continuacion
   se muestra la informacion relativa a la misma conexion logica del ejemplo
   anterior.

 % btsockstat
 Active L2CAP sockets
 PCB      Recv-Q Send-Q Local address/PSM       Foreign address   CID   State
 c2afe900      0      0 00:02:72:00:d4:1a/3     00:07:e0:00:0b:ca 66    OPEN
 Active RFCOMM sessions
 L2PCB    PCB      Flag MTU   Out-Q DLCs State
 c2afe900 c2b53380 1    127   0     Yes  OPEN
 Active RFCOMM sockets
 PCB      Recv-Q Send-Q Local address     Foreign address   Chan DLCI State
 c2e8bc80      0    250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3    6    OPEN

  29.4.5. Protocolo RFCOMM

   El protocolo RFCOMM proporciona emulacion de puertos serie a traves del
   protocolo L2CAP. Este protocolo se basa en el estandar de la ETSI
   denominado TS 07.10. RFCOMM es un protoclo de transporte sencillo, con
   soporte para hasta 9 puertos serie RS-232 (EIATIA-232-E). El protocolo
   RFCOMM permite hasta 60 conexiones simultaneas (canales RFCOMM) entre dos
   dispositivos Bluetooth.

   Para los propositos de RFCOMM, un camino de comunicacion involucra siempre
   a dos aplicaciones que se ejecutan en dos dispositivos distintos (los
   extremos de la comunicacion). Entre ellos existe un segmento que los
   comunica. RFCOMM pretende cubrir aquellas aplicaciones que utilizan los
   puertos serie de las maquinas donde se ejecutan. El segmento de
   comunicacion es un enlace Bluetooth desde un dispositivo al otro (conexion
   directa).

   RFCOMM trata unicamente con la conexion de dispositivos directamente, y
   tambien con conexiones entre el dispositivo y el modem para realizar
   conexiones de red. RFCOMM puede soportar otras configuraciones, tales como
   modulos que se comunican via Bluetooth por un lado y que proporcionan una
   interfaz de red cableada por el otro.

   En FreeBSD el protocolo RFCOMM se implementa utilizando la capa de
   "sockets" de Bluetooth.

  29.4.6. Enparejamiento de dispositivos

   Por defecto, la comunicacion Bluetooth no se valida, por lo que cualquier
   dispositivo puede en principio hablar con cualquier otro. Un dispositivo
   Bluetooth (por ejemplo un telefono celular) puede solicitar autenticacion
   para realizar un determinado servicio (por ejemplo para el servicio de
   marcacion por modem). La autenticacion de Bluetooth normalmente se realiza
   utilizando codigos PIN. Un codigo PIN es una cadena ASCII de hasta 16
   caracteres de longitud. Los usuarios deben introducir el mismo codigo PIN
   en ambos dispositivos. Una vez que el usuario ha introducido el PIN
   adecuado ambos dispositivos generan una clave de enlace. Una vez generada,
   la clave se puede almacenar en el propio dispositivo o en un dispositivo
   de almacenamiento externo. La siguiente vez que se comuniquen ambos
   dispositivos se reutilizara la misma clave. El procedimiento descrito
   hasta este punto se denomina emparejamiento (pairing). Es importante
   recordar que si la clave de enlace se pierde en alguno de los dispositivos
   involucrados se debe volver a ejecutar el procedimiento de emparejamiento.

   El daemon hcsecd(8) se encarga de gestionar todas las peticiones de
   autenticacion Bluetooth. El archivo de configuracion predeterminado se
   denomina /etc/bluetooth/hcsecd.conf. A continuacion se muestra una seccion
   de ejemplo de un telefono celular con el codigo PIN arbitrariamente fijado
   al valor "1234":

 device {
         bdaddr  00:80:37:29:19:a4;
         name    "Pav's T39";
         key     nokey;
         pin     "1234";
       }

   No existe ninguna limitacion en los codigos PIN a excepcion de su
   longitud. Algunos dispositivos (por ejemplo los dispositivos de mano
   Bluetooth) pueden obligar a escribir un numero predeterminado de
   caracteres para el codigo PIN. La opcion -d fuerza al daemon hcsecd(8) a
   permanecer ejecutadose en primer plano, de tal forma que se puede observar
   facilmente lo que ocurre. Si se configura el dispositivo Bluetooth remoto
   para aceptar el procedimiento de emparejamiento y se inicia la conexion
   con dicho dispositivo, el dispositivo remoto deberia decir que el
   procedimiento de emparejamiento se ha aceptado y deberia solicitar el
   codigo PIN. Si se introduce el mismo codigo PIN que se escribio en su
   momento en el fichero hcsecd.conf el procedimiento de emparejamiento y de
   generacion de la clave de enlace deberia terminar satisfactoriamente. Por
   otra parte el procedimiento de emparejamiento se puede iniciar en el
   dispositivo remoto. A continuacion se muestra un ejemplo de la salida del
   daemon hcsecd.

 hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist
 hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4
 hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists
 hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4

  29.4.7. Protocolo de descubrimiento de servicios (SDP)

   El Protocolo de Descubrimiento de Servicios (Service Discovery Protocol o
   SDP) permite a las aplicaciones cliente descubrir la existencia de
   diversos servicios proporcionados por uno o varios servidores de
   aplicaciones, junto con los atributos y propiedades de los servicios que
   se ofrecen. Estos atributos de servicio incluyen el tipo o clase de
   servicio ofrecido y el mecanismo o la informacion necesaria para utilizar
   dichos servicios.

   SDP se basa en una determinada comunicacion entre un servidor SDP y un
   cliente SDP. El servidor mantiene una lista de registros de servicios, los
   cuales describen las caracteristicas de los servicios ofrecidos. Cada
   registro contiene informacion sobre un determinado servicio. Un cliente
   puede recuperar la informacion de un registro de servicio almacenado en un
   servidor SDP lanzando una peticion SDP. Si el cliente o la aplicacion
   asociada con el cliente decide utilizar un determinado servicio, debe
   establecer una conexion independiente con el servicio en cuestion. SDP
   proporciona un mecanismo para el descubrimiento de servicios y sus
   atributos asociados, pero no proporciona ningun mecanismo ni protocolo
   para utilizar dichos servicios.

   Normalmente, un cliente SDP realiza una busqueda de servicios acotada por
   determinadas caracteristicas. No obstante hay momentos en los que resulta
   deseable descubrir todos los servicios ofrecidos por un servidor SDP sin
   que pueda existir ningun conocimiento previo sobre los registros que pueda
   contener. Este proceso de busqueda de cualquier servicio ofrecido se
   denomina navegacion o browsing.

   El servidor Bluetooth SDP denominado sdpd(8) y el cliente de linea de
   ordenes sdpcontrol(8) se incluyen en la instalacion estandar de FreeBSD.
   El siguiente ejemplo muestra como realizar una consulta de navegacion una
   consulta de navegacion SDP.

 % sdpcontrol -a 00:01:03:fc:6e:ec browse
 Record Handle: 00000000
 Service Class ID List:
         Service Discovery Server (0x1000)
 Protocol Descriptor List:
         L2CAP (0x0100)
                 Protocol specific parameter #1: u/int/uuid16 1
                 Protocol specific parameter #2: u/int/uuid16 1

 Record Handle: 0x00000001
 Service Class ID List:
         Browse Group Descriptor (0x1001)

 Record Handle: 0x00000002
 Service Class ID List:
         LAN Access Using PPP (0x1102)
 Protocol Descriptor List:
         L2CAP (0x0100)
         RFCOMM (0x0003)
                 Protocol specific parameter #1: u/int8/bool 1
 Bluetooth Profile Descriptor List:
         LAN Access Using PPP (0x1102) ver. 1.0

   ... y asi sucesivamente. Resulta importante resaltar una vez mas que cada
   servicio posee una lista de atributos (por ejemplo en el canal RFCOMM).
   Dependiendo de los servicios que se quieran utilizar puede resultar
   necesario anotar algunos de los atributos. Algunas implementaciones de
   Bluetooth no soportan navegacion de servicios y pueden devolver una lista
   vacia. En este caso se puede intentar buscar algun servicio determinado.
   El ejemplo siguiente muestra como buscar el servicio OBEX Object Push
   (OPUSH):

 % sdpcontrol -a 00:01:03:fc:6e:ec search OPUSH

   En FreeBSD los servicios a clientes Bluetooth se suministran mediante el
   servidor sdpd(8).

 # sdpd

   La aplicacion local servidora que quiere proporcionar servicio Bluetooth a
   los clientes remotos puede registrar su servicio con el daemon SDP local.
   Un ejemplo de dicha aplicacion Un ejemplo de dicha aplicacion lo
   constituye el daemon rfcomm_pppd(8). Una vez ejecutado el daemon registra
   un servicio LAN de Bluetooth en el daemon SDP local.

   Se puede obtener la lista de servicios registrados con el servidor SDP
   local lanzando una consulta de navegacion SDP utilizando el canal de
   control local.

 # sdpcontrol -l browse

  29.4.8. Acceso telefonico a redes (DUN) y acceso a redes mediante perfiles PPP
  (LAN)

   El perfil de Acceso Telefonico a Redes (Dial-Up Networking o DUN) se
   utiliza mayoritariamente con modems y telefonos celulares. Los escenarios
   cubiertos por este perfil se describen a continuacion:

     * Utilizacion de un telefono celular o un modem por una computadora para
       simular un modem sin cables que se conecte a un servidor de acceso
       telefonico a redes o para otros servicios de acceso telefonico
       relacionados;

     * Utilizacion de un telefono celular o un modem por un computador para
       recibir llamadas de datos.

   El Acceso a Redes con perfiles PPP (LAN) se puede utilizar en las
   siguientes situaciones:

     * Acceso LAN para un unico dispositivo Bluetooth;

     * Acceso LAN para multiples dispositivos Bluetooth;

     * Conexion de PC a PC (utilizando emulacion de PPP sobre una linea
       serie).

   En FreeBSD ambos perfiles se implementan bajo las ordenes ppp(8) y
   rfcomm_pppd(8), un encapsulador que convierte la conexion RFCOMM de
   Bluetooth en algo que puede ser utilizado por PPP. Antes de que se puedan
   utilizar los perfiles se debe definir una nueva etiqueta PPP en el fichero
   de configuracion /etc/ppp/ppp.conf. Consulte rfcomm_pppd(8) para ver
   algunos ejemplos.

   En el siguiente ejemplo se va a utilizar rfcomm_pppd(8) para abrir una
   conexion RFCOMM con un dispositivo remoto con BD_ADDR 00:80:37:29:19:a4
   sobre un canal RFCOMM basado en DUN (Dial-Up Networking). El numero de
   canal RFCOMM se obtiene a partir del dispositivo remoto a traves de SDP.
   Es posible especificar el canal RFCOMM a mano, en cuyo caso rfcomm_pppd(8)
   no realizara ninguna consulta SDP. Se puede utilizar la orden
   sdpcontrol(8) para descubrir el canal RFCOMM utilizado en el dispositivo
   remoto.

 # rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup

   Para proporcionar el servicio de Acceso a Redes a traves de PPP (LAN) se
   debe ejecutar el servidor sdpd(8). Se debe crear una nueva entrada en
   /etc/ppp/ppp.conf. Le rogamos que consulte rfcomm_pppd(8) y observe los
   ejemplos que se facilitan. Por ultimo se debe ejecutar el servidor PPP
   RFCOMM sobre un numero de canal RFCOMM adecuado. El servidor PPP RFCOMM
   registrara automaticamente el servicio LAN de Bluetooth con el servidor
   SDP local. El ejemplo que se muestra a continuacion describe como ejecutar
   el servidor PPP RFCOMM.

 # rfcomm_pppd -s -C 7 -l rfcomm-server

  29.4.9. Perfil OBEX Object Push (OPUSH)

   OBEX es un protocolo muy utilizado para transferencias de ficheros
   sencillas entre dispositivos moviles. Su uso mas importante se produce en
   comuncaciones por infrarrojos, donde se utiliza para transferencia de
   ficheros genericos entre portatiles o dispositivos Palm y para enviar
   tarjetas de visita o entradas de la agenda entre telefonos celulares y
   otros dispositivos con aplicaciones PIM.

   El cliente y el servidor de OBEX se implementan como un paquete denominado
   obexapp disponible como " port" en comms/obexapp.

   El cliente OBEX se utiliza para introducir y para recuperar recuperar
   objetos del servidor OBEX. Un objeto puede por ejemplo ser una tarjeta de
   visita o una cita. El cliente OBEX puede obtener un numero de canal RFCOMM
   del dispositivo remoto utilizando SDP. Esto se hace especificando el
   nombre del servicio en lugar del numero de canal RFCOMM. Los nombres de
   servicios soportados son: IrMC, FTRN y OPUSH. Es posible especificar el
   canal RFCOMM como un numero. A continuacion se muestra un ejemplo de una
   sesion OBEX donde el objeto que posee la informacion del dispositivo se
   recupera del telefono celular y un nuevo objeto (la tarjeta de visita) se
   introduce en el directorio de dicho telefono.

 % obexapp -a 00:80:37:29:19:a4 -C IrMC
 obex> get
 get: remote file> telecom/devinfo.txt
 get: local file> devinfo-t39.txt
 Success, response: OK, Success (0x20)
 obex> put
 put: local file> new.vcf
 put: remote file> new.vcf
 Success, response: OK, Success (0x20)
 obex> di
 Success, response: OK, Success (0x20)

   Para proporcionar servicio de OBEX el servidor sdpd(8) debe estar en
   funcionamiento. Ademas se debe crear un directorio raiz donde todos los
   objetos van a ser almacenados. La ruta por defecto para el directorio raiz
   es /var/spool/obex. Por ultimo se debe ejecutar el servidor OBEX en un
   numero de canal RFCOMM valido. El servidor OBEX registra automaticamente
   el servicio de Object Push con el daemon SDP local. El ejemplo que se
   muestra a local. El ejemplo que se muestra a continuacion continuacion
   describe como ejecutar el servidor OBEX.

 # obexapp -s -C 10

  29.4.10. Perfil de puerto serie (SP)

   El perfil de puerto serie (Serial Port o SP) permite que dispositivos
   Bluetooth realicen emulacion de RS232 (o similar). El escenario cubierto
   por este perfil trata con con aplicaciones comerciales que utilizan
   Bluetooth como un sustituto sustituto del cable, utilizando una capa de
   abstraccion que representa un puerto serie virtual.

   La aplicacion rfcomm_sppd(1) implementa el perfil Puerto Serie. Usa una
   pseudo tty como abstraccion de puerto serie virtual. El ejemplo de mas
   abajo muestra como conectarse a un servicio de dispositivo remoto de
   Puerto Serie. Observe que no necesita especificarse el canal RFCOMM:
   rfcomm_sppd(1) puede obtenerlo del dispotivo remoto via SDP. Si necesita
   especificarlo por alguna razon hagalo en la propia linea de ordenes.

 # rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6
 rfcomm_sppd[94692]: Starting on /dev/ttyp6...

   Una vez conectado el pseudo tty se puede utilizar como un puerto serie.

 # cu -l ttyp6

  29.4.11. Solucion de problemas

    29.4.11.1. Un dispositivo remoto no puede conectarse

   Algunos dispositivos Bluetooh antiguos no soportan el cambio de cambio de
   roles. Por defecto, roles. Cuando FreeBSD acepta una nueva conexion por
   defecto intenta realizar un cambio de rol y convertirse en maestro.
   Dispositivos que no son capaces de realizar este cambio no pueden
   conectarse. Es interesante resaltar que el cambio de roles se realiza
   cuando se esta estableciendo una nueva conexion de tal forma que no es
   posible preguntar al dispositivo si soporta intercambio de roles. Existe
   una opcion HCI para desactivar el intercambio de roles en la parte local.

 # hccontrol -n ubt0hci write_node_role_switch 0

    29.4.11.2. Algo va mal ?puedo ver exactamente que esta ocurriendo?

   Si, se puede. Utilice el paquete hcidump-1.5, que se puede descargar de
   aqui. La herramienta hcidump es similar a la herramienta tcpdump(1). Se
   puede utilizar para mostrar el contenido de los paquetes Bluetooth sobre
   el terminal y para volcar los paquetes Bluetooth a un fichero.

29.5. Puenteado

   Escrito por Steve Peterson.

  29.5.1. Introduccion

   Algunas veces resulta util dividir una red fisica (como por ejemplo un
   segmento Ethernet) en dos segmentos de red separados, sin tener que crear
   subredes IP y sin utilizar una pasarela para comunicar ambos segmentos. El
   dispositivo que realiza esta funcion se denomina "bridge". Un sistema
   FreeBSD con dos interfaces de red puede actuar como un "bridge" o puente
   entre ambas.

   El "bridge" funciona de tal forma que aprende las direcciones de la capa
   MAC (direcciones Ethernet) de los nodos que se encuentran conectados a
   cada interfaz de red de tal forma que solo se reenvia trafico entre los
   segmentos de red cuando las direcciones fuente y destino se encuentran
   separadas en segmentos distintos.

   En varios aspectos se puede comparar un "bridge" con un "switch" de pocos
   puertos.

  29.5.2. Situaciones donde el puenteado resulta adecuado

   Existen al menos dos situaciones tipicas donde se puede utilizar la
   funcionalidad proporcionada por los " bridges".

    29.5.2.1. Trafico de gran volumen en un segmentos de red

   La primera situacion surge cuando nos encontramos con un segmento de red
   congestionado pero por las razones que sean no queremos subdividir la red
   e interconectar las nuevas subredes mediante un "route".

   Vamos a considerar un ejemplo de un periodico donde los departamentos
   editoriales y de produccion utilizan la misma subred. Los usuarios de la
   editorial utilizan el servidor A como servidor de ficheros y los de
   produccion utilizan el servidor B. Se Se utiliza una red Ethernet para
   conectar ambos departamentos y se ha detectado que la alta utilizacion del
   enlace esta ralentizando el funcionamiento de la red.

   Si los usuarios de la editorial pudieran agregarse en un segmento de red
   mientras que los usuarios de produccion se localizaran en otro se podrian
   conectar ambos segmentos mediante un "bridge". Solo se utilizara el
   "bridge" para encaminar trafico de red destinado a interfaces que se
   encuentren en el otro lado del "bridge", reduciendo de esta forma la
   congestion en cada nuevo segmento.

    29.5.2.2. Cortafuegos de filtrado/conformacion de trafico

   La segunda situacion tipica se produce cuando se necesita un cortafuegos
   pero no la Traduccion de Direcciones de Red (NAT).

   A continuacion se muestra un ejemplo. Una pequena compania se comunica con
   su ISP utilizando DSL o ISDN. Dicha compania posee 13 13 direcciones IP
   globalmente accesibles delegadas por su ISP y tiene 10 ordenadores en
   funcionamiento. En esta situacion un un cortafuegos basado en un "router"
   resulta dificil debido a la distribucion del espacio de direccionamiento
   disponible (subnetting).

   Un cortafuegos implementado sobre un "bridge" se puede utilizar en el
   camino de bajado desde el ISP hasta las oficinas de la compania sin
   necesidad de tener en cuenta ningun aspecto relacionado con la
   distribucion de las direcciones IP.

  29.5.3. Configuracion de un "bridge"

    29.5.3.1. Seleccion de la interfaz de red

   Un "bridge" necesita al menos dos tarjetas de red situadas en dos
   segmentos de red para su funcionamiento. Por desgracia no todas las
   interfaces de red pueden usarse para el puenteo. Consulte bridge(4), ahin
   encontrara mas informacion sobre que tarjetas puede usar.

   Por favor, instale y pruebe las dos tarjetas de red antes de continuar.

    29.5.3.2. Cambios en la configuracion del nucleo

   Para activar el soporte de "bridging" en el nucleo anada

 options BRIDGE

   al fichero de configuracion del nucleo y recompile el kernel.

    29.5.3.3. Soporte de cortafuegos

   Si se desea utilizar el "bridge" como un cortafuegos, se debe anadir
   ademas la opcion IPFIREWALL. Lea el capilo de firewalls para obtener
   informacion general sobre como configurar el bridge para que actue ademas
   como cortafuegos.

   Si ademas queremos que los paquetes que no sean IP (por ejemplo paquetes
   ARP) puedan atravesar el "bridge" deberemos anadir la opcion
   IPFIREWALL_DEFAULT_TO_ACCEPT. Tenga en cuenta opcion modifica el
   comportamiento del cortafuegos de tal forma que por defecto aceptara
   cualquier paquete. Hay que tener cuidado para asegurarse de que el
   comportamiento esperado del cortafuegos, que reside en el conjunto de
   reglas que se hayan definido, no se vea afectado por este cambio.

    29.5.3.4. Soporte de conformado de trafico

   Si se quiere utilizar el "bridge" como un conformador de trafico, es
   decir, como un elemento capaz de adaptar los distintos flujos segun
   determinados patrones, se debe anadir la opcion DUMMYNET a la
   configuracion del nucleo. Se ruega consultar dummynet(4) para obtener mas
   informacion al respecto.

  29.5.4. Como activar el "bridge"

   Anadir la linea:

 net.link.ether.bridge=1

   en /etc/sysctl.conf para habilitar el soporte de "bridging" en tiempo de
   ejecucion y la linea:

 net.link.ether.bridge_cfg=if1,if2

   Para activar el "bridging" en las interfaces especificadas (sustituya if1
   y if2 con los nombres de sus interfaces de red). Si deseamos filtrar los
   paquetes puenteados utilizando ipfw(8), debemos anadir tambien:

 net.link.ether.bridge_ipfw=1

   En FreeBSD 5.2-RELEASE y posteriores, se debe utilizar las siguientes
   lineas en lugar de las anteriores:

 net.link.ether.bridge.enable=1
 net.link.ether.bridge.config=if1,if2
 net.link.ether.bridge.ipfw=1

  29.5.5. Informacion adicional

   Si queremos ser capaces de conectarnos al "bridge" mediante telnet(1) se
   puede asignar una direccion IP a una de las tarjetas de red del "bridge".
   Por amplio consenso se considera una mala idea asignar mas de una
   direccion IP al "bridge".

   Si poseemos varios "bridges" en nuestra red solamente puede existir un
   unico camino entre cualesquiera dos maquinas de nuestra red. Tecnicamente
   hablando esto significa que no existe soporte para gestion de enlace
   mediante mecanismos basados en arboles de recubrimiento minimos ("spanning
   tree").

   Un "bridge" puede anadir latencia a los tiempos de respuesta de la orden
   ping(8), especialmente cuando el trafico tiene que viajar de un segmento
   de red al otro.

29.6. NFS

   Reorganizado y ampliado por Tom Rhodes.
   Escrito por Bill Swingle.

   FreeBSD soporta diversos sistemas de ficheros, uno de los cuales es el
   Sistema de Ficheros en Red, tambien conocido por su acronimo en ingles
   NFS. NFS permite compartir directorios y ficheros a traves de la red. Los
   usuarios del sistema NFS pueden acceder a ficheros que se encuentran
   fisicamente en maquinas remotas de una forma transparente, como si se
   tratara de ficheros locales.

   He aqui algunos los beneficios mas destacados que NFS proporciona:

     * Las estaciones de trabajo locales utilizan menos espacio de disco
       debido a que los datos se encuentran centralizados en un unico lugar
       pero pueden ser accedidos y modificados por varios usuarios, de tal
       forma que no es necesario replicar la informacion.

     * Los usuarios no necesitan disponer de un directorio " home" en cada
       una de las maquinas de la organizacion. Los directorios "home" pueden
       crearse en el servidor de NFS para posteriormente poder acceder a
       ellos desde cualquier maquina a traves de la infraestrutura de red.

     * Tambien se pueden compartir a traves de la red dispositivos de
       almacenamiento como disqueteras, CDROM y unidades ZIP. Esto puede
       reducir la inversion en dichos dispositivos y mejorar el
       aprovechamiento del hardware existente en la organizacion.

  29.6.1. Como funciona NFS

   El sistema NFS esta dividido al menos en dos partes principales: un
   servidor y uno o mas clientes. Los clientes acceden de forma remota a los
   datos que se encuentran almacenados en el servidor. Para que el sistema
   funcione correctamente se deben configurar y ejecutar unos cuantos
   procesos.

  Nota:

   En FreeBSD 5.X se ha reemplazado portmap por rpcbind. de esta forma para
   los ejemplos que vamos a comentar a continuacion se recuerda que en
   FreeBSD 5.X se debe reemplazar cualquier instancia de portmap por rpcbind.

   El servidor de NFS debe ejecutar los siguientes daemones:

   Daemon                             Descripcion                             
   nfsd    El daemonNFS, que atiende peticiones de clientes NFS.              
   mountd  El daemon de montaje de NFS, que transporta las peticiones que     
           nfsd(8) realiza.                                                   
   portmap El daemon portmapper permite que los clientes NFS puedan descubrir 
           que puerto esta utilizando el servidor de NFS.                     

   El cliente tambien puede ejecutar un daemon conocido , como nfsiod. El
   daemon nfsiod atiende las peticiones provinientes del servidor NFS. Este
   daemon es opcional y sirve para mejorar el rendimiento pero no es
   necesario para el funcionamiento correcto del sistema. Se recomienda
   consultar nfsiod(8) para obtener mas informacion.

  29.6.2. Configuracion de NFS

   La configuracion de NFS es un proceso relativamente sencillo. Para que los
   procesos anteriormente descritos se ejecuten en tiempo de arranque del
   sistema, basta con realizar paquenas modificaciones en /etc/rc.conf.

   En /etc/rc.conf del servidor de NFS se deben configurar las siguientes
   opciones:

 portmap_enable="YES"
 nfs_server_enable="YES"
 mountd_flags="-r"

   mountd se ejecuta automaticamente cuando se activa el servidor NFS.

   En el cliente debemos asegurarnos de que se encuentra activada la activada
   la siguiente opcion dentro de /etc/rc.conf:

 nfs_client_enable="YES"

   El archivo /etc/exports especifica los directorios o sistemas de ficheros
   que NFS exporta al exterior. Cada linea dentro de /etc/exports/ especifia
   un sistema de ficheros y que maquinas tienen derechos de acceso sobre
   dicho sistema. Ademas de los derechos de acceso se pueden definir otras
   opciones de acceso, tales como solo lectura o lectura y escritura. Existen
   multitud de opciones que pueden definirse sobre un directorio exportable
   pero en este manual solo se van a comentar unas pocas. Consulte exports(5)
   para obtener una descripcion mas detallada.

   Aqui se muestran algunos ejemplos de entradas para /etc/exports:

   El siguiente ejemplo proporciona una idea de como exportar sistemas de
   ficheros, aunque los parametros pueden diferir dependiendo de su entorno y
   su configuracion de red. En dicho ejemplo, se exporta el directorio
   /cdromm a tres maquinas que se encuentran en el mismo dominio que el
   servidor (de ahi que no se especifique ningun nombre de dominio para cada
   maquina) o que pueden estar dadas de alta en /etc/hosts. En cualquier caso
   la opcion -ro configura el sistema de ficheros de red como "solo lectura"
   ("read-only"). Con esta opcion los sistemas remotos no seran capaces de
   realizar cambios sobre el sistema de ficheros exportados.

 /cdrom -ro host1 host2 host3

   La siguiente linea exporta el directorio /home a tres maquinas utilizando
   direcciones IP. Esto resulta util cuando disponemos de una red privada
   pero no disponemos de ningun servidor de DNS configurado. Tambien se
   podria configurar /etc/hosts para que resolviera nombres de maquinas
   internos; consulte hosts(5) para obtener mas informacion al respecto. La
   opcion -alldirs permite que los subdirectorios del directorio /home
   tambien se puedan utilizar como puntos de montaje. En otras palabras, esto
   permite que los clientes puedan trabajar sobre los subdirectorios en los
   que esten realmente interesados.

 /home  -alldirs  10.0.0.2 10.0.0.3 10.0.0.4

   La siguiente linea exporta el directorio /a de tal forma que puedan
   acceder a dicho directorio dos maquinas situadas en distintos dominios. La
   opcion -maproot=root permite que el usuario root de la maquina cliente
   modifique los datos del sistema de ficheros en red como si fuera el
   usuario root del servidor. Si no se especifica la opcion -maproot=root el
   usuario root del cliente puede no poseer los permisos necesarios para
   realizar modificaciones en el sistema de ficheros.

 /a  -maproot=root  host.example.com box.example.org

   Para que un cliente pueda acceder al sistema de ficheros exportado debe
   poseer permisos para ello. Debemos asegurarnos de que el cliente se
   encuentra listado en /etc/exports.

   Dentro de /etc/exports cada linea representa informacion de exportacion de
   un sistema de ficheros para un determinado conjunto de maquinas. Una
   maquina solo puede aparecer una vez dentro de un sistema de ficheros
   exportable y el archivo solo puede tener una unica entrada por defecto.
   Por ejemplo, si suponemos que /usr es un unico sistema de ficheros la
   siguiente configuracion de /etc/exports seria incorrecta:

 /usr/src   client
 /usr/ports client

   Existe un sistema de ficheros, concretamente /usr, que posee dos lineas
   con reglas de exportacion para la misma maquina, client. El formato
   correcto para esta situacion seria el siguiente:

 /usr/src /usr/ports  client

   Las propiedades de un sistemas de ficheros que se exporta al exterior
   deben aparecer agrupadas bajo la misma linea. Lineas que no poseen ningun
   cliente se tratan como si tuvieran una unica maquina. Esto limita la forma
   en que pueden configurarse la exportaciones de sistemas de ficheros pero
   para la mayoria de la gente no suele ser un problema.

   El ejemplo que se muestra a continuacion es una muestra de una lista de
   exportacion correcta, donde /usr y /exports son sistemas de ficheros
   locales:

 # Exportar src y ports a cliente01 y cliente02, pero
 # solo el cliente01 tiene acceso root
 /usr/src /usr/ports -maproot=root    cliente01
 /usr/src /usr/ports               cliente02
 # Las maquinas cliente tienen acceso root y pueden montar todo lo que aparezca
 # en /exports.  Cualquier sistema puede montar /exports/obj en modo
 # solo lectura
 /exports -alldirs -maproot=root      cliente01 cliente02
 /exports/obj -ro

   Se debe reiniciar el daemon mountd siempre que se modifique el contenido
   del archivo /etc/exports para que los cambios surtan efecto. Esto se
   realiza enviando la senal HUP al proceso mountd:

 # kill -HUP `cat /var/run/mountd.pid`

   Tambien se puede reiniciar FreeBSD para que se cargue la nueva
   configuracion pero este mecanismo no resulta necesario si se ejecutan las
   ordenes como root, que ponen el servidor de NFS de nuevo en
   funcionamiento.

   En el servidor de NFS:

 # portmap
 # nfsd -u -t -n 4
 # mountd -r

   En el cliente de NFS:

 # nfsiod -n 4

   En este punto todo deberia estar preparado para poder anclar el sistema de
   ficheros remoto en la maquina cliente. En los siguientes ejemplos el
   nombre del servidor es server y el punto de montaje temporal utilizado por
   el cliente es client. Si se desea montar el sistema de ficheros de forma
   temporal o simplemente comprobar que la configuracion funciona sin
   problemas se puede ejecutar una orden como la que se muestra a
   continuacion con permisos de root en la maquina cliente:

 # mount server:/home /mnt

   Esta orden ancla el directorio /home del servidor en el directorio /mnt
   del cliente. Si todo funciona correctamente deberia poder entrar en el
   directorio /mnt del cliente y ver todos los ficheros que se encuentran en
   el directorio /home del servidor.

   Si queremos anclar automaticamente un sistema de ficheros remoto cuando la
   maquina esta arrancando se puede anadir una linea como la siguiente dentro
   de /etc/fstab:

 servidor:/home  /mnt    nfs     rw      0       0

   fstab(5) comenta todas las opciones disponibles.

  29.6.3. Usos practicos

   El protocolo NFS tiene multiples usos practicos. Los mas tipicos se
   enumeran a continuacion:

     * Comparticion de la unidad de CDROM entre varias maquinas. Esto resulta
       ser mas barato y una forma mas conveniente para instalar software en
       varias maquinas.

     * En grandes redes puede ser mas adecuado configurar un servidor central
       de NFS en el cual se almacenen todos los "homes" de los distintos
       usuarios. Estos directorios se pueden exportar a traves de la red de
       tal forma que los usuarios pueden trabajar con el mismo directorio
       independientemente de la maquina que utilicen.

     * Varias maquinas pueden poseer el directorio /usr/ports/distfiles
       compartido. De este modo cuando necesitemos instalar un port en varias
       maquinas, se puede acceder rapidamente a las fuentes sin necesidad de
       bajarlas una vez para cada maquina.

  29.6.4. Anclajes automaticos usando amd

   Escrito por Wylie Stilwell.
   Reescrito por Chern Lee.

   El daemon amd(8) ("the automatic mounter daemon", o daemon de montaje
   automatico) automaticamente ancla un sistema de ficheros remoto cuando se
   tiene que acceder a un fichero perteneciente a dicho sistema. Los sistemas
   de ficheros que permanecen inactivos durante un determinado periodo de
   tiempo son automaticamente desmontados por el mismo daemon. Este daemon
   proporciona una alternativa sencilla a la utilizacion de los montajes
   permanentes que normalmente se especifican a traves del fichero
   /etc/fstab.

   amd trabaja actuando como un servidor servidor de NFS para los directorios
   /host y /net. Cuando se accede a algun fichero ubicado bajo estos
   directorios amd busca el punto de montaje remoto y automaticamente lo
   monta. El directorio /net se utiliza para anclar sistemas de ficheros
   remotos especificados mediante direcciones IP, mientras que el directorio
   /host almacena aquellos sistemas de ficheros remotos que han sido
   especificados mediante un nombre de maquina.

   amd detecta cualquier intento de acceder a un fichero dentro del
   directorio /host/foobar/usr y se encarga de montar el sistema de ficheros
   remoto (/usr) en la maquina, en caso de que no estuviera ya anclado.

   Ejemplo 29.1. Anclaje de una exportacion utilizando amd

   showmount muestra los puntos de montaje que posee una maquina remota. Por
   ejemplo para conocer los montajes de un maquina llamada foobar, se puede
   utilizar:

 % showmount -e foobar
 Exports list on foobar:
 /usr                               10.10.10.0
 /a                                 10.10.10.0
 % cd /host/foobar/usr

   Como se observa en el ejemplo, showmount muestra el directorio /usr como
   una exportacion. Cuando se cambia el directorio actual al directorio
   /host/foobar/usr el daemon amd intenta resolver el nombre foobar y
   automaticamente ancla el sistema de ficheros remoto.

   El daemon amd se puede ejecutar a partir de los scripts de inicio,
   utilizando la siguiente linea del archivo de configuracion /etc/rc.conf:

 amd_enable="YES"

   Ademas, amd soporta opciones adicionales que pueden definirse mediante la
   variable amd_flags. Por defecto, la variable amd_flags posee las
   siguientes opciones:

 amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"

   El archivo /etc/amd.map define las opciones por defecto con las cuales se
   anclan los sistemas de ficheros remotos. El archivo /etc/amd.conf define
   algunas caracteristicas avanzadas para el daemon amd.

   Se ruega consultar las paginas del manual de amd(8) y de amd.conf(5) para
   obtener mas informacion.

  29.6.5. Problemas de integracion con otras plataformas

   Escrito por John Lind.

   Determinados adaptadores Ethernet para sistemas basados en el bus ISA
   poseen restricciones que pueden producir serios problemas de red, en
   particular con el protocolo NFS. Estos problemas no son especificos de
   FreeBSD, pero los sistemas FreeBSD se ven afectados por ellos.

   El problema surge casi siempre cuando el sistema (FreeBSD) esta empotrado
   dentro de una red compuesta por estaciones de trabajo de alto rendimiento,
   como por ejemplo estaciones de Silicon Graphics y de Sun Microsystems. El
   montaje del sistema de ficheros remoto suele funcionar perfectamente y
   algunas operaciones sobre el el sistema de ficheros pueden tener exito
   pero de repente el el servidor que no responde a las peticiones del
   cliente, aunque peticiones y respuestas de otros clientes funcionan con
   normalidad y se continuan procesando. Esto sucede en los sistemas
   clientes, tanto en sistemas FreeBSD como en otras estaciones de trabajo.
   En muchos sistemas, lo unico que se puede hacer es resetear la maquina de
   forma abrupta, ya que el bloqueo producido por el protocolo NFS no se
   puede solucionar.

   Aunque la solucion "correcta" consiste en obtener un adaptador Ethernet
   con mayor rendimiento y capacidad, todavia se puede aplicar un parche
   sencillo que puede llegar a permitir un funcionamiento sin problemas. Si
   el sistema FreeBSD actua como servidor de NFS se puede incluir la opcion
   w=1024 cuando el ejecute una peticion de montaje sobre dicho servidor. Si
   FreeBSD dicho servidor. Si FreeBSD actua como cliente de NFS, se puede
   ejecutar mount(8) con el parametro -r=1024. Estas opciones se pueden
   especificar en el /etc/fstab del cliente para que entren en funcionamiento
   cuando se realicen montajes automaticos y tambien se puede utilizar el
   parametro -o de mount(8) cuando se realicen montajes manuales.

   Resulta apropiado resaltar que existe un problema totalmente distinto que
   algunas veces se confunde con el que acabamos de describir, que aparece
   cuando el servidor y los clientes se encuentran en redes diferentes. Si
   nos encontramos en esta situacion debemos asegurarnos de que nuestros "
   routers" estan encaminando correctamente los paquetes UDP que genera el
   protocolo NFS pues en caso contrario el sistema no funcionara,
   independientemente de los ajustes que se realicen en el cliente o en el
   servidor.

   En los siguientes ejemplos fastws es el nombre de una estacion de trabajo
   de altas prestaciones y freebox es el nombre de un sistema FreeBSD con un
   adaptador Ethernet de bajas prestaciones. Se pretende ademas exportar el
   directorio /sfcompartido (ver exports(5)) y el directorio /projecto. Tenga
   en cuenta que en cualquier caso puede resultar util definir opciones
   adicionales a las que que se muestran en el siguiente ejemplo, como pueden
   ser hard, soft o bg. Esto dependera de la aplicacion que utilice el
   sistema de ficheros remoto.

   Ejemplos de configuracion para el sistema FreeBSD (freebox) que actua como
   cliente. Configuracion del archivo /etc/fstab de freebox:

 fastws:/sfcompartido /projecto nfs rw,-r=1024 0 0

   Orden de ejecucion manual para freebox:

 # mount -t nfs -o -r=1024 fastws:/sfcompartido /projecto

   Ejemplos de configuracion para el sistema FreeBSD que actua como servidor.
   Configuracion de /etc/fstab de fastws:

 freebox:/sfcompartido /projecto nfs rw,-w=1024 0 0

   Orden de ejecucion manual para fastws:

 # mount -t nfs -o -w=1024 freebox:/sfcompartido /projecto

   Casi cualquier adaptador Ethernet de 16 bits permite operar sin operar sin
   las restricciones anteriores sobre el tamano de lectura o escritura
   especificado por defecto.

   Por si alguien estuviera interesado a continuacion se muestra el error que
   aparece en estos casos, lo cual explica por que decimos que el error
   resulta irrecuperable. NFS trabaja tipicamente con un tamano de "bloque"
   de 8 K (aunque se pueden producir fragmentos de menor tamano). Debido a
   que el maximo tamano de los paquetes Ethernet se encuentra alrededor de
   los 1500 bytes el "bloque" de NFS se trocea en varios paquetes Ethernet
   aunque desde el punto de vista del protocolo NFS se trata como si fuese un
   unico paquete. Los trozos deben reensamblarse en el destino y se debe
   enviar una confirmacion para el bloque recibido. Las estaciones de trabajo
   de altas prestaciones pueden soltar paquetes NFS de forma continua uno
   despues de otro, lo mas juntos posible. Por otro lado en las tarjetas de
   red mas pequenas y de menor capacidad puede ocurrir que un paquete recien
   llegado a la tarjeta sobreescriba informacion perteneciente a un paquete
   anterior antes de que llegue a ser transmitido completamente, de tal forma
   que al recibirse el bloque NFS no puede ser ni reconstruido ni ni
   reconocido. Como resultado de este proceso la maquina tratara de enviar el
   mismo paquete transcurridos unos instantes de espera, pero se trataran de
   enviar de nuevo los 8 K que constituyen un bloque NFS, y de esta forma se
   repetira el el proceso, asi hasta el infinito.

   Si se mantiene el tamano del bloque por debajo del tamano de paquete
   maximo de Ethernet, podemos asegurar que cualquier paquete Ethernet
   transporta un bloque NFS, el cual puede asentirse individualmente,
   evitando asi la explosion de paquetes y el eventual bloqueo del sistema.

   Desbordamientos circulares del "buffer" (" overruns") pueden producirse si
   nos encontramos con una estacion de trabajo de altas prestaciones que
   envia continuamente mucho trafico a un sistema convencional, pero con
   tarjetas Ethernet de buena calidad, estos desbordamientos resultan
   altamente improbables para el caso de los tamanos de bloque por defecto
   generados por el sistema NFS. Cuando se produce un desbordamiento, las
   unidades afectadas se retransmiten, y existe una gran probabilidad de que
   se reciban, se reensamblen y se confirmen.

29.7. Ejecucion sin disco duro

   Actualizado por Jean-Franc,ois Dockes.
   Reorganizado y ampliado por Alex Dupre.

   Una maquina FreeBSD se puede arrancar a traves de la red y operar sin que
   necesite poseer ningun disco, utilizando sistemas de ficheros de un
   servidor de NFS. No se necesita realizar ninguna modificacion al sistema,
   salvo configurar determinados ficheros. Este tipo de sistemas se pueden
   configurar facilmente puesto que FreeBSD dispone de todos los elementos
   necesarios:

     * Existen al menos dos formas de cargar el nucleo del sistema operativo
       a traves de la red:

          * PXE: El sistema de Intel(R) conocido como Preboot Execution
            Environment. Se trata de una especie de arranque inteligente a
            partir de una memoria de solo lectura (ROM) que se encuentra en
            algunas placas bases y tarjetas de red. Se puede obtener mas
            informacion en pxeboot(8).

          * El port etherboot (net/etherboot) genera codigo de solo lectura
            (codigo ROM) que se puede utilizar para arrancar maquinas a
            traves de la red. Dicho codigo se puede instalar en una memoria
            de arranque tipo PROM en algunas tarjetas de red o se puede
            cargar en una disquetera (o disco duro), y tambien en un sistema
            de ficheros MS-DOS(R) que este en ejecucion. Varias tarjetas de
            red soportan este mecanismo.

     * Existe un script de ejemplo (/usr/share/examples/diskless/clone_root)
       que facilita la creacion y el mantenimiento del sistema de ficheros
       raiz de la estacion de trabajo en el servidor. La configuracion de
       este "script" se debe retocar ligeramente pero sirve como punto de
       partida para comenzar rapidamente.

     * Existen ficheros estandar de arranque bajo /etc que dan soporte al
       arranque de maquinas sin disco.

     * El "swapping", en caso de ser necesario, se puede realizar usando NFS
       y tambien usando un disco duro local.

   Existen varias formas de ejecutar una estacion de trabajo sin discos. En
   el proceso se involucran distintos elementos y la mayoria se pueden
   adaptar a las necesidades del usuario. A continuacion se describen
   variaciones sobre la configuracion de un sistema sin discos, haciendo
   incapie en la simplicidad y compatibilidad con los "scripts" de arranque
   de FreeBSD. El sistema que vamos a describir tiene las siguientes
   caracteristicas.

     * Las estaciones de trabajo sin disco utilizan un sistema de ficheros
       raiz de solo lectura y un sistema de ficheros compartido, tambien de
       solo lectura, bajo /usr.

       El sistema de ficheros raiz es una copia del sistema raiz estandar de
       FreeBSD (normalmente del sistema raiz del servidor), donde se
       sobreescriben algunos archivos de configuracion necesarios para la
       ejecucion sin discos y para la configuracion local especifica de la
       maquina objetivo.

       Las partes del sistema de ficheros raiz que tiene que tener permisos
       de lectura y escritura se superponen con los sistemas de ficheros
       mfs(8) (FreeBSD 4.X) o md(4). Cualquier cambio que se produzca en
       dichas partes se perdera cuando se reinicie el sistema.

     * El nucleo se transmite y se carga utilizando etherboot o bien PXE,
       dependiendo del hardware y los mecanismos que se soporten.

  Atencion:

   Como se ha comentado con anterioridad estos sistemas son inseguros. Se
   debe confinar dentro de una red protegida y el resto de las maquinas por
   defecto no deben confiar en estos metodos.

   Toda la informacion que se presenta en esta seccion se ha probado
   utilizando FreeBSD 4.9-RELEASE y 5.2.1-RELEASE. El texto se encuentra
   estructurado principalmente para utilizacion en sistemas 4.X. Se insertan
   notas para indicar cambios producidos en las versiones 5.X.

  29.7.1. Conocimientos previos

   Configurar estaciones de trabajo sin discos es una operacion relativamente
   sencilla pero en la que pueden cometerse errores. Estos errores resultan
   algunas veces dificiles de diagnosticar debido a razones que vamos a
   exponer a continuacion. Por ejemplo:

     * Diferentes opciones de tiempo de compilacion pueden determinar
       comportamientos distintos en tiempo de ejecucion.

     * Los mensajes de error a menudo resultan cripticos o incluso no
       existen.

   Se se quieren resolver los posibles problemas que puedan surgir resulta
   muy util conocer el funcionamiento conceptual del mecanismo.

   Para que el arranque se produzca exitosamente se deben realizar varias
   operaciones:

     * La maquina necesita obtener algunos parametros iniciales, tales como
       su direccion IP, el fichero ejecutable, el nombre del servidor y la
       ruta raiz. Esto se realiza utilizando los protocolos DHCP o BOOTP.
       DHCP es una extension compatible del protocolo BOOTP y utiliza los
       mismos numeros de puertos y los mismos formatos de paquete basicos.

       Es posible configurar un sistema de tal forma que utilice solamente
       BOOTP. En el sistema base de FreeBSD se incluye el programa servidor
       bootpd(8).

       No obstante DHCP posee varias ventajas sobre BOOTP (archivos de
       configuracion mas limpios, posibilidad de ejecutar PXE, junto con
       otras caracteristicas que no se relacionan directamente con el tema
       que estamos tratando tratando) por lo que principalmente se va a
       describir la configuracion de DHCP, proporcionando ejemplos
       equivalentes en bootpd(8) siempre que sea posible. La configuracion de
       ejemplo se basa en el paquete software de ISC DHCP (en el servidor de
       prueba se instalo la version 3.0.1.r12).

     * La maquina sin disco necesita transferir uno o varios programas a la
       memoria local. Para ello se usa TFTP o bien NFS. La eleccion entre
       ambos se produce mediante la configuracion de la compilacion que se
       produce en varios lugares. Una fuente de error tipica aparece cuando
       se especifican ficheros con el protocolo incorrecto: TFTP normalmente
       transfiere todos los ficheros desde un unico directorio del servidor,
       de modo que espera nombres de ficheros relativos a dicho directorio.
       Por otro lado NFS necesita recibir rutas de fichero absolutas.

     * El kernel y los programas de arranque intermedios deben ser
       inicializados y ejecutados. Existen diferencias importantes en este
       area:

          * PXE carga pxeboot(8), una version modificada de la tercera fase
            del cargador de arranque de FreeBSD. loader(8) obtiene la mayoria
            de los parametros necesarios para arrancar el sistema y los
            deposita en variables de entorno del kernel antes de tranferir el
            control. En este caso es posible utilizar un un nucleo GENERIC .

          * etherboot carga directamente el directamente el nucleo con menos
            trabajo previo que el metodo anterior. Para ello se debe compilar
            un nucleo con ciertas opciones.

       PXE y etherboot funcionan muy bien en los sistemas 4.X. Dado que los
       nucleos de los sistemas 5.X permiten que el loader(8) realice mas
       tareas, se prefiere usar PXE.

       Si su BIOS y su tarjeta de red soportan PXE lo normal es utilizarlo.
       No obstante se puede arrancar un sistema 5.X utilizando etherboot.

     * Para acabar la tarea la maquina necesita acceder al sistema de
       ficheros. En todos los casos se utiliza NFS.

   No olvide consultar diskless(8).

  29.7.2. Instrucciones de configuracion

    29.7.2.1. Configuracion utilizando ISC DHCP

   El servidor ISC DHCP puede responder tanto a peticiones de BOOTP como a
   peticiones de DHCP.

   ISC DHCP no forma parte de la version 4.9 de FreeBSD por lo que se debe
   instalar el port net/isc-dhcp3-server o el paquete correspondiente. Por
   favor, consulte Capitulo 4, Instalacion de aplicaciones: <<packages>> y
   ports para obtener mas informacion sobre los ports y los paquetes.

   Una vez que ISC DHCP se encuentra instalado necesita un fichero de
   configuracion para poder ejecutarse /usr/local/etc/dhcpd.conf). A
   continuacion se muestra un ejemplo comentado, donde la maquina margaux
   utiliza etherboot y la maquina corbieres utiliza PXE:

 default-lease-time 600;
 max-lease-time 7200;
 authoritative;

 option domain-name "example.com";
 option domain-name-servers 192.168.4.1;
 option routers 192.168.4.1;

 subnet 192.168.4.0 netmask 255.255.255.0 {
   use-host-decl-names on; 1
   option subnet-mask 255.255.255.0;
   option broadcast-address 192.168.4.255;

   host margaux {
     hardware ethernet 01:23:45:67:89:ab;
     fixed-address margaux.example.com;
     next-server 192.168.4.4; 2
     filename "/data/misc/kernel.diskless"; 3
     option root-path "192.168.4.4:/data/misc/diskless"; 4
   }
   host corbieres {
     hardware ethernet 00:02:b3:27:62:df;
     fixed-address corbieres.example.com;
     next-server 192.168.4.4;
     filename "pxeboot";
     option root-path "192.168.4.4:/data/misc/diskless";
   }
 }
          

   1 Esta opcion indica a dhcpd que envie el valor que se encuentra en las    
     declaraciones de host como el nombre de maquina para la maquina sin      
     disco. Otra forma de hacer esto seria anadiendo una opcion option        
     host-name margaux dentro de las declaraciones de maquina.                
   2 La directiva next-server selecciona el servidor de TFTP o de NFS que se  
     debe utilizar para cargar el nucleo o el fichero cargador del nucleo     
     (por defecto se utiliza la misma maquina que actua como servidor de      
     DHCP).                                                                   
   3 La directiva filename define el archivo que etherboot o PXE cargara en   
     el siguiente paso de ejecucion. Debe especificarse de acuerdo con el     
     metodo de transferencia seleccionado. Etherboot se puede compilar para   
     que use NFS o TFTP. El sistema FreeBSD se configura por defecto para     
     NFS. PXE utiliza TFTP por lo que se utiliza una ruta relativa para       
     especificar el nombre del fichero (esto puede depender de la             
     configuracion del servidor de TFTP pero suele ser lo normal). Ademas PXE 
     no carga el nucleo, lo hace pxeboot. Existen otras posibilidades         
     interesantes, como cargar pxeboot desde el directorio /boot de una       
     unidad de CD-ROM de FreeBSD (ya que pxeboot(8) puede cargar un nucleo    
     GENERIC surge la posibilidad de utilizar PXE para arrancar desde una     
     unidad de CD-ROM remota).                                                
   4 La opcion root-path define la ruta para el sistema de ficheros raiz      
     utilizando la notacion tipica de NFS. Cuando se utiliza PXE, es posible  
     dejar la direccion IP siempre y cuando no se active la opcion del nucleo 
     de BOOTP. El servidor NFS sera en este caso el mismo que el servidor de  
     TFTP.                                                                    

    29.7.2.2. Configuracion utilizando BOOTP

   A continuacion se muestra la configuracion equivalente utilizando bootpd
   (reducida a un unico cliente). Esta configuracion se debe situar en
   /etc/bootptab.

   Por favor, recuerde que etherboot se debe compilar con la opcion
   especifica de NO_DHCP_SUPPORT para que pueda utilizar BOOTP y que PXE
   requiere DHCP. La unica ventaja obvia de bootpd es que se encuentra
   disponible en el sistema base.

 .def100:\
   :hn:ht=1:sa=192.168.4.4:vm=rfc1048:\
   :sm=255.255.255.0:\
   :ds=192.168.4.1:\
   :gw=192.168.4.1:\
   :hd="/tftpboot":\
   :bf="/kernel.diskless":\
   :rp="192.168.4.4:/data/misc/diskless":

 margaux:ha=0123456789ab:tc=.def100
          

    29.7.2.3. Preparacion de un programa de arranque con Etherboot

   La pagina web de Etherboot contiene una amplia documentacion enfocada
   principalmente a los sistemas Linux pero en cualquier caso contiene
   informacion que puede resultar util. En los siguientes parrafos se
   describe brevemente como se puede utilizar etherboot en un sistema
   FreeBSD.

   Lo primero es instalar el port o paquete net/etherboot. El port de
   etherboot esta en /usr/ports/net/etherboot. Si el arbol de ports esta
   instalado en el sistema basta con ejecutar make en dicho directorio. Por
   favor, lea Capitulo 4, Instalacion de aplicaciones: <<packages>> y ports
   para saber mas sobre los ports y los paquetes.

   Se puede modificar la configuracion de etherboot (por ejemplo, para que
   use TFTP en lugar de NFS) editando el fichero Config que se encuentra en
   el directorio fuente de etherboot.

   Para nuestros propositos se utilizara un disquete de arranque. Para
   utilizar otros metodos (PROM o un programa MS-DOS(R)) por favor consulte
   la documentacion de etherboot.

   Para crear un disco de arranque se debe insertar un disco en la unidad de
   disquetes de la maquina donde se ha instalado etherboot, cambiar al
   directorio src dentro del arbol de directorios de etherboot y teclear:

 # gmake bin32/tipo_de_dispositivo.fd0
        

   tipo_de_dispositivo depende del tipo de tarjeta Ethernet que se encuentre
   instalada en la estacion de trabajo sin disco. Consulte el fichero NIC en
   el mismo directorio para determinar cual es el tipo_de_dispositivo que
   debe usted usar.

    29.7.2.4. Arranque con PXE

   Por defecto el cargador pxeboot(8) carga, valga la redundancia, el kernel
   via NFS. El El cargador se puede compilar para que utilice TFTP en lugar
   de NFS especificando la opcion LOADER_TFTP_SUPPORT dentro de
   /etc/make.conf. Observe los comentarios de /etc/defaults/make.conf (o de
   /usr/share/examples/etc/make.conf para sistemas 5.X) para saber mas
   detalles.

   Existen otras dos opciones de make.conf no documentadas que pueden ser
   utiles para arrancar una maquina sin disco a traves del puerto serie:
   BOOT_PXELDR_PROBE_KEYBOARD y BOOT_PXELDR_ALWAYS_SERIAL (esta ultima solo
   existe en FreeBSD 5.X).

   Para utilizar PXE cuando arranca la maquina normalmente el usuario tiene
   que seleccionar la opcion Boot from network dentro del menu de opciones de
   la BIOS o pulsar un tecla de funcion cuando la maquina se esta
   inicializando.

    29.7.2.5. Configuracion de servidores de TFTP y de NFS

   Si PXE o etherboot se encuentran configurados para utilizar TFTP se
   necesita activar tftpd en el servidor de ficheros:

    1. Crear un directorio desde el cual el daemon tftpd servira los
       ficheros, por ejemplo /tftpboot.

    2. Anadir la siguiente linea a /etc/inetd.conf:

 tftp    dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -l -s /tftpboot

  Nota:

       Parece que al menos algunas versiones de PXE utilizan la version TCP
       de TFTP. En este caso se puede anadir una segunda linea, donde se
       reemplace dgram udp por stream tcp.

    3. Indicar a inetd que vuelva a leer su fichero de configuracion:

 # kill -HUP `cat
                 /var/run/inetd.pid`

   Se puede situar el directorio tftpboot en cualquier parte del servidor.
   Debe asegurarse de que la localizacion se encuentra correctamente
   configurada tanto en inetd.conf como en dhcpd.conf.

   En todos los casos tambien resulta necesario activar el sistema de NFS y
   exportar los sistemas de ficheros adecuados, todo ello en el servidor de
   NFS.

    1. Anadir lo siguiente a /etc/rc.conf:

 nfs_server_enable="YES"

    2. Exportar el sistema de ficheros donde el directorio raiz sin disco se
       encuentra localizado anadiendo lo siguiente a /etc/exports (ajuste el
       punto de montaje de la unidad y sustituya margaux corbieres por el
       nombre de las estaciones de trabajo sin disco, segun corresponda):

 /data/misc -alldirs -ro margaux corbieres

    3. Indicar a mountd que vuelva a leer su archivo de configuracion. Si en
       un primer paso se ha configurado la activacion automatica del sistema
       de NFS en /etc/rc.conf lo mejor es reiniciar para que los cambios
       surtan efecto.

 # kill -HUP `cat
                 /var/run/mountd.pid`

    29.7.2.6. Construccion de un kernel sin disco

   Si se utiliza etherboot, se necesita crear un archivo de configuracion
   para el kernel de la maquina sin disco que posea las siguientes opciones
   (ademas de las opciones del nucleo habituales):

 options     BOOTP          # Use BOOTP to obtain IP address/hostname
 options     BOOTP_NFSROOT  # NFS mount root filesystem using BOOTP info
        

   Puede resultar interesante utilizar ademas BOOTP_NFSV3, BOOT_COMPAT y
   BOOTP_WIRED_TO (consultar LINT en 4.X o NOTES en sistemas 5.X).

   Los nombres de estas opciones son nombres historicos y ligeramente
   confusos ya que permiten un uso indistinto tanto de DHCP como de BOOTP
   dentro del nucleo (tambien resulta posible forzar la utilizacion unica de
   o bien BOOTP o bien de DHCP).

   Contruir el nucleo (vea Capitulo 8, Configuracion del kernel de FreeBSD) y
   copiarlo al lugar especificado en el archivo dhcpd.conf.

  Nota:

   Cuando se utiliza PXE, la construccion del nucleo con las opciones
   anteriores no resulta ser algo estrictamente necesario (aunque se
   recomienda). Activar dichas opciones provoca un mayor trafico de
   peticiones de DHCP durante el arranque del nucleo, lo que puede dar lugar
   a pequenas inconsistencias entre los nuevos valores y los los valores
   recuperados por pxeboot(8) en casos muy especificos. La ventaja de
   utilizarlas consiste en que como un efecto colateral se configurara el
   nombre de la maquina. De otro modo tendriamos que configurar dicho nombre
   mediante otro metodo por ejemplo mediante la configuracion especifica de
   la maquina cliente a traves del archivo rc.conf.

  Nota:

   Para que el nucleo se pueda cargar sin problemas con etherboot en sistemas
   5.X dicho nucleo tiene que tener compilado el soporte para device hints.
   Para ello normalmente se especifica la siguiente opcion dentro del fichero
   de configuracion del nucleo (consulte los comentarios del fichero NOTES):

 hints           "GENERIC.hints"

    29.7.2.7. Preparacion del sistema de ficheros raiz

   Se debe crear un sistema de ficheros raiz en las estaciones de trabajo sin
   disco, concretamente en la localizacion especificada por root-path dentro
   de dhcpd.conf. Las siguientes secciones describen dos formas de hacer
   esto.

      29.7.2.7.1. Utilizacion del "script" clone_root

   Este es el modo mas rapido de crear un sistema de ficheros raiz, pero
   actulamente solo se encuentra soportado en FreeBSD 4.X. El "script" de
   shell se encuentra en /usr/share/examples/diskless/clone_root y debe ser
   configurado al menos para ajustar el lugar donde se construira el sistema
   de ficheros (concretamente la variable DEST).

   Consulte los comentarios que se encuentran al comienzo del "script" para
   conocer cuales son las instrucciones que debe seguir. Alli se explica como
   se construye el sistema de ficheros base y como determinados ficheros se
   pueden sobreescribir de manera selectiva por versiones especificas para
   funcionar sin discos, para toda una subred o para una maquina individual.
   Tambien alli se muestran ejemplos de los ficheros /etc/fstab y
   /etc/rc.conf para maquinas sin disco.

   Los archivos README que se encuentran dentro de
   /usr/share/examples/diskless contienen mucha informacion de base, que
   junto con el resto de ejemplos dentro del directorio diskless sirven para
   documentar un metodo de configuracion distinto del que se utiliza en
   clone_root y en los " scripts" del sistema de /etc, que resultan ser un
   tanto confusos. No obstante se pueden utilizar a modo de referencia,
   excepto si se prefiere utilizar el metodo que se describe en ellos, en
   cuyo caso se necesitara modificar y adaptar los "scripts" de forma
   adecuada.

      29.7.2.7.2. Utilizacion del procedimiento estandar de make world

   Este metodo se puede utilizar tanto en FreeBSD 4.X o 5.X y se instalara un
   sistema completamente nuevo (no solo el sistema de ficheros raiz) dentro
   de DESTDIR. Basta con ejecutar el siguiente " script":

 #!/bin/sh
 export DESTDIR=/data/misc/diskless
 mkdir -p ${DESTDIR}
 cd /usr/src; make world && make kernel
 cd /usr/src/etc; make distribution

   Una vez ejecutado puede ser necesario ajustar los ficheros /etc/rc.conf y
   /etc/fstab que se encuentran en DESTDIR de acuerdo con nuestras
   necesidades.

    29.7.2.8. Configuracion de la particion de intercambio

   En caso de ser necesario se puede acceder a un fichero de intercambio
   (swap) a traves del sistema NFS. Uno de los metodos tipicamente utilizados
   para realizar esta tarea ha sido retirado de la distribucion 5.X.

      29.7.2.8.1. NFS swap en sistemas FreeBSD 4.X

   La ubicacion del fichero de intercambio y su tamano se puede especificar
   con las opciones FreeBSD-specific 128 y 129 de BOOTP/DHCP. A continuacion
   se muestran varios ejemplos de ficheros de de configuracion para ISC DHCP
   3.0 o bootpd:

    1. Anadir las siguientes lineas al fichero dhcpd.conf:

 # Global section
 option swap-path code 128 = string;
 option swap-size code 129 = integer 32;

 host margaux {
   ... # Standard lines, see above
   option swap-path "192.168.4.4:/netswapvolume/netswap";
   option swap-size 64000;
 }
            

       swap-path es la ruta al directorio donde se instalaran los archivos de
       intercambio. Cada Cada fichero se denomina
       swap.direccion-ip-del-cliente.

       Versiones mas antiguas de dhcpd usaban una sintaxis del estilo de
       option option-128 "..., lo cual ya no esta soportado.

       /etc/bootptab normalmente utiliza la siguiente sintaxis:

 T128="192.168.4.4:/netswapvolume/netswap":T129=0000fa00

  Nota:

       El tamano del fichero dedicado a intercambio se debe expresar en
       /etc/bootptab en formato hexadecimal.

    2. En el servidor de ficheros NFS donde va a residir el fichero de "swap"
       se debe(n) crear dicho(s) fichero(s)

 # mkdir /volumenintercambiored/intercambiored
 # cd /volumenintercambiored/intercambiored
 # dd if=/dev/zero bs=1024 count=64000 of=swap.192.168.4.6
 # chmod 0600 swap.192.168.4.6
            

       192.168.4.6 es la direccion IP del cliente sin disco.

    3. En el servidor NFS anadir a /etc/exports la siguiente linea:

 /volumenintercambiored  -maproot=0:10 -alldirs margaux corbieres
            

       A continuacion indicar a mountd que vuelva a leer el fichero
       /etc/exports como se ha indicado anteriormente.

      29.7.2.8.2. NFS swap en FreeBSD 5.X

   El nucleo no soporta la activacion del intercambio a traves de NFS en
   tiempo de arranque. De esta forma la "swap" se debe activar mediante los
   "scripts" montando un sistema de ficheros de lectura-escritura y creando y
   activando el fichero de intercambio. Para crear un fichero de intercambio
   de un determinado tamano se puede ejecutar lo siguiente:

 # dd if=/dev/zero of=/ruta/al/fichero/de/intercambio bs=1k count=1 oseek=100000

   Para activar el intercambio se tiene que anadir la siguiente linea al
   fichero de configuracion rc.conf:

 swapfile=/ruta/al/fichero/de/intercambio

    29.7.2.9. Varios

      29.7.2.9.1. Ejecucion con un /usr de solo lectura

   Si la estacion de trabajo sin disco se configura para utilizar el sistema
   X-Window se tiene que ajustar el fichero de configuracion de xdm debido a
   que dicho fichero situa por defecto el fichero de "logs" de errores en el
   directorio /usr.

      29.7.2.9.2. Uso de un servidor no-FreeBSD

   Cuando el servidor del sistema de ficheros raiz no ejecuta FreeBSD se
   tiene que crear un sistema de ficheros raiz sobre una maquina FreeBSD para
   despues copiarlo al servidor original mediante las ordenes tar o cpio.

   En esta situacion algunas veces surgen varios problemas relacionados con
   los dispositivos especiales que se encuentran en el directorio /dev debido
   a los diferentes tamanos de los enteros mayor/menor. Una solucion para
   este problema consiste en exportar un directorio del servidor no-FreeBSD,
   montar este directorio en la maquina FreeBSD anterior y ejecutar MAKEDEV
   en dicha maquina para crear las entradas de dispositivo correctas (FreeBSD
   5.0 y posteriores utilizan devfs(5) para ubicar nodos de dispositivos de
   forma transparente para el usuario de tal modo que la ejecucion de MAKEDEV
   en estos sistemas no sirve para nada).

29.8. RDSI

   la pagina de RDSI de Dan Kegel constituye un recurso de informacion
   bastante bueno sobre la tecnologia RDSI (ISDN en ingles) y sobre el
   hardware relacionado.

   A continuacion se comenta un esquema rapido sobre RDSI:

     * Si usted vive en Europa le puede resultar util leer la seccion sobre
       tarjetas RDSI.

     * Si se prevee utilizar RDSI principalmente para conectarse a Internet a
       traves de un Proveedor de Servicios utilizando un mecanismo de
       marcacion automatica no dedicado (dial-up), se puede echar un vistazo
       a los Adaptadores de Terminal. Dichos adaptadores proporciona la mayor
       flexibilidad y garantiza los minimos problemas en caso de cambio de
       cambio de proveedor.

     * Si estamos conectados a dos LAN o conectando a Internet con una
       conexion RDSI dedicada puede ser interesante considerar la opcion de
       usar un "router/bridge" unico.

   El coste es un factor importante a la hora de determinar que solucion se
   debe escoger. Las siguientes opciones se encuentran ordenadas desde las
   mas baratas hasta las mas caras.

  29.8.1. Tarjetas RDSI

   Escrito por Hellmuth Michaelis.

   La implementacion de RDSI que posee FreeBSD soporta solamente el estandar
   DSS1/Q.931 (tambien conocido como Euro-RDSI) utilizando tarjetas pasivas.
   A partir de FreeBSD 4.4 se soportan tambien algunas tarjetas activas
   usando firmware que ademas soporta otros protocolos de senalizacion; esto
   tambien sucede con la primera tarjeta RDSI de acceso primario (PRI)
   soportada.

   El software isdn4bsd permite conectar con otras pasarelas RDSI utilizando
   IP sobre HDLC o bien PPP PPP sincrono: ambos mediante el uso del PPP del
   nucleo con isppp, una version modificada del controlador sppp(4) o
   mediante la utilizacion del PPP de entorno de usuario, ppp(8). Si se
   utiliza ppp(8) de entorno de usuario se pueden agrupar dos o mas canales B
   de RDSI (channel bonding). Existe tambien software que permite a una
   maquina responder a llamadas de telefono y algunas cosas mas como un modem
   de 300 baudios.

   Cada vez se soportan mas tarjetas RDSI bajo FreeBSD y los informes
   existentes muestra que FreeBSD se utiliza con dichas tarjetas de forma
   satisfactoria en toda Europa y tambien en otras partes del mundo.

   Las tarjetas RDSI pasivas soportadas en FreeBSD son principalmente las que
   poseen el chip Infineon (antiguamente Siemens) ISAC/HSCX/IPAC. Tambien las
   tarjetas RDSI con los chips de Cologne (en bus ISA exclusivamente),
   tarjetas PCI con el chip Winbond W6692, algunas tarjetas con combinaciones
   de los chips Tiger 300/320/ISAC y tambien algunas tarjetas basadas en
   chips propietarios como las AVM Fritz! PCI V.1.0 y AVM Fritz! PnP.

   Actualmente las tarjetas RDSI activas soportadas son las AVM B1 (ISA y
   PCI) BRI, y las AVM T1 PCI PRI.

   Se puede consultar /usr/share/examples/isdn/ para obtener documentacion
   sobre isdn4bsd y tambien en la pagina principal de isdn4bsd, donde hay
   enlaces de ayuda, erratas y mucha mas informacion util, como por ejemplo
   el manual de isdn4bsd.

   Si se quiere anadir soporte para un protoclo RDSI distinto para una
   tarjeta RDSI que no se encuentra soportada o para mejorar isdn4bsd en
   algun aspecto por favor pongase en contacto con Hellmuth Michaelis.

   Para realizar consultas referentes a la instalacion, configuracion y
   depuracion de problemas relacionados con isdn4bsd le recomendamos recurrir
   a la lista de correo freebsd-isdn.

  29.8.2. Adaptadores de terminal RDSI

   Los Adaptadores de Terminal (TA), son para RDSI lo que los modems son para
   las lineas de telefono convencionales.

   La mayor parte de los TAs utilizan el conjunto de instrucciones AT de los
   modem Hayes y se pueden utilizar en lugar del modem.

   Un TA opera basicamente de igual forma que un modem, diferenciandose en
   que las velocidades de conexion y "throughput" son mucho mas grandes. La
   configuracion de PPP se realiza exactamente igual que para una
   configuracion de modem convencional.

   La ventaja principal de utilizar un TA para conectarse a un proveedor de
   servicios de internet consiste en que se puede usar PPP dinamico. Ya que
   el espacio de direcciones de IP se esta direcciones de IP se esta
   convirtiendo cada vez convirtiendo en un recurso cada di mas limitado y
   escaso los proveedores ya no desean proporcionar direcciones IP estaticas
   a sus clientes. No obstante la mayoria de los "routers standalone" no son
   capaces de adquirir direcciones IP dinamicas.

   Los TAs confian completamente en el daemon de PPP que se esta ejecutando
   para proporcionar fiabilidad y estabilidad en la conexion. De esta forma
   si se tiene configurado PPP se puede migrar facilmente de la utilizacion
   de modems analogicos al uso de RDSI. No obstante si existia algun problema
   con PPP antes de efectuar la migracion dichos problemas persistiran en
   RDSI.

   Si se desea maxima estabilidad se puede utilizar la opcion PPP, no el PPP
   a nivel de usuario.

   Se sabe que los siguientes TAs funcionan con FreeBSD:

     * Motorola BitSurfer y Bitsurfer Pro

     * Adtran

   La mayoria de los demas TAs probablemente tambien funcionen puesto que los
   fabricantes siempre tratan de que sus productos puedan aceptar la mayoria
   de las ordenes AT.

   El problema que existe con los TAs es que, como sucede con los modems, se
   necesita tener una buena tarjeta serie instalada en el sistema.

   Se recomienda consultar el tutorial FreeBSD Serial Hardware para obtener
   una comprension detallada del funcionamiento de los dispositivos serie en
   FreeBSD y para comprender las diferencias entre puertos serie sincronos y
   asincronos.

   Un TA que se ejecuta a traves de un puerto serie (asincrono) esta limitado
   a 115.2 Kbs, aunque la conexion RDSI sea de 128 Kbs. Para utilizar
   completamente el ancho de banda que RDSI proporciona, se debe conectar el
   TA a una tarjeta serie sincrona.

   No se engane creyendo que comprando un TA interno hara desaparecer los
   problemas sincronos/asincronos. Los TA internos simplemente disponen de un
   chip de puerto serie instalado de fabrica. Lo unico que se consigue con
   estos dispositivos es no tener que enchufarlos a la red eletrica ahorrando
   asi un enchufe y no tener que comprar un cable serie, pero los problemas
   dichos anteriormente permanecen.

   Una tarjeta asincrona con un TA resulta ser al menos tan rapida como un
   "router standalone" y si FreeBSD controla dicha tarjeta se puede adaptar
   mas facilmente.

   La eleccion de una tarjeta sincrona/TA versus un "router standalone" se
   trata en la mayoria de los casos de una cuestion cuasi-religiosa. Han
   existido diversas discusiones sobre este tema en varias listas de correo.
   Nosotros recomendamos que busque informacion en los historicos para para
   poder sopesar los pros y los contras que se han esgrimido en tales
   discusiones.

  29.8.3. "bridges/routers" RDSI "Stand-alone"

   Los "bridges" o "routers" RDSI no son especificos de FreeBSD o de
   cualquier otro sistema operativo. Para una descripcion completa de la
   tecnologia de "bridge" y de pasarela de red por favor consulte cualquier
   libro sobre redes.

   En el contexto de esta seccion los terminos "router", pasarela y "bridge"
   se utilizaran indistintamente.

   Segun va bajando el coste de los " routers/bridges" RDSI su utilizacion
   entre el publico en general va en aumento. Un "router" RDSI es una pequena
   caja que se conecta directamente a la red Ethernet local y que gestiona
   sus propias conexiones con el "bridge/router" remoto. Posee un software
   preconfigurado para comunicarse via PPP y tambien utilizando otros
   protocolos de uso comun.

   Un router sopota una mayor tasa de paquetes (throughput) que un
   "standalone TA", ya que utiliza una conexion RDSI sincrona de forma
   completa.

   El problema principal que surge con los "routers" y los "bridges" RDSI es
   que la interoperatibilidad entre fabricantes muchas veces causa problemas.
   Si se esta planificando conectarse a un proveedor de servicios resulta
   conveniente discutir previamente con ellos las necesidades y requisitos.

   Si se tiene en mente conectar dos segmentos LAN tales como su LAN de casa
   y la LAN de su oficina RDSI proporciona la solucion mas simple y menos
   costosa de gestionar. Esto es asi porque al comprar usted mismo el
   equipamiento necesario para ambos extremos de la conexion tiene usted el
   control sobre el enlace y puede asegurar su correcto funcionamiento.

   Por ejemplo, si queremos conecar una computadora casera o una sucursal de
   la red de oficinas con la oficinal central, se puede utilizar una
   configuracion como la que se muestra a continuacion.

   Ejemplo 29.2. Sucursal o red domestica

   La red utiliza una topologia basada en bus con Ethernet tipo 10 base 2
   ("thinnet"). Se conecta, en caso de ser necesario, el "router" a la red
   cableada mediante un "transceiver" AUI/10BT.

   10 Base 2 Ethernet

   Si nuestra sucursal o red hogar esta compuesta unicamente por una
   computadora se puede utilizar un cable cruzado de par trenzado para
   conectar con el "router standalone" de forma directa.

   Ejemplo 29.3. Oficina central u otra LAN

   La red utiliza una topologia en estrella basada en Ethernet de 10 base T
   ("Par Trenzado").

   ISDN Network Diagram

   Una gran ventaja que poseen la mayoria de los "routers/bridges" es que
   pueden gestionar al mismo tiempo dos conexiones PPP independientes
   destinadas a dos organizaciones distintas. Esta funcionalidad no se
   proporciona en la mayoria de los TAs, excepto para determinados modelos
   (normalmente mas caros) que se fabrican con dos puertos serie. No confunda
   esto con la agrupacion de canales, MPP, etc.

   Esta caracteristica puede resultar muy util si, por ejemplo, se dispone de
   una conexion RDSI dedicada con la oficina y queremos introducirnos en ella
   pero no queremos utilizar otra linea RDSI en el trabajo. Un "router"
   situado en las instalaciones de la oficina puede gestionar una conexion de
   canal B dedicada (64 Kpbs) hacia internet y utilizar el otro canal B como
   una conexion de datos independiente. El segundo canal B se puede utilizar
   para marcacion remota ("dial-in" y " dial-out") o para agrupacion dinamica
   de canales (MPP, etc) en conjuncion con el primer canal B con el objetivo
   de obtener un mayor ancho de banda.

   Un "bridge" Ethernet permite transmitir mas trafico aparte del trafico IP.
   Se puede transmitir IPX/SPX o cualquier otro protocolo que se este
   utilizando.

29.9. NIS/YP

   Escrito por Bill Swingle.
   Ampliado por Eric Ogren y Udo Erdelhoff.

  29.9.1. ?Que es esto?

   NIS, siglas de Network Information Services (Servicios de Informacion de
   Red), fue un servicio desarrollado por Sun Microsystems para centralizar
   la administracion de sistemas UNIX(R) (originalmente SunOS(TM)).
   Actualmente se considera como un estandar de la industria; los principales
   sistemas tipo UNIX(R) (Solaris(TM), HP-UX, AIX(R), Linux, NetBSD, OpenBSD,
   FreeBSD, etc) implementan NIS.

   NIS tambien se conocia como el servicio de paginas amarillas pero debido a
   problemas legales debidos a la propiedad de marcas comerciales, Sun tuvo
   que cambiar el nombre. El antiguo termino ("Yellow Pages" o yp) todavia se
   ve y se utiliza con frecuencia.

   Se trata de un sistema cliente servidor basado en llamadas RPC que permite
   a un grupo de maquinas que se encuentran definidas dentro de un dominio
   administrativo NIS compartir un conjunto de ficheros de configuracion.
   Esto permite al administrador de sistemas por un lado configurar clientes
   NIS de forma minimalista y por otro lado centralizar la gestion de los
   ficheros de configuracion en una unica ubicacion (una sola maquina).

   Se trata de algo similar al sistema de dominio de Windows NT(R) aunque la
   implementacion interna no se puede comparar, la funcionalidad y el
   servicio obtenido son similares.

  29.9.2. Terminos/procesos que debe usted conocer

   Existen varios conceptos y varios procesos de usuario que el usuario no
   versado en estos temas suele encontrarse la primera vez que se intenta
   implantar un servicio de NIS en FreeBSD, tanto si se intenta configurar un
   servidor como si se intenta configurar un cliente:

   +------------------------------------------------------------------------+
   |      Term      |                      Description                      |
   |----------------+-------------------------------------------------------|
   |                | Un servidor maestro de NIS y todos sus clientes       |
   |                | (incluyendo a sus servidores esclavos) poseen el      |
   | NIS domainname | mismo nombre dominio NIS. Al igual que ocurre con el  |
   |                | nombre de dominio de Windows NT(R), el nombre de      |
   |                | dominio de NIS no tiene nada que ver con el nombre de |
   |                | dominio de DNS.                                       |
   |----------------+-------------------------------------------------------|
   |                | Debe ejecutarse para que se activen las llamadas a    |
   |                | procedimientos remotos (Remote Procedure Call o RPC)  |
   | portmap        | que son utilizadas por NIS. Si portmap no se esta     |
   |                | ejecutando no se podra ejecutar ni clientes ni        |
   |                | servidores de NIS.                                    |
   |----------------+-------------------------------------------------------|
   |                | "Asocia" un cliente con un servidor NIS. Primeramente |
   |                | se lee el nombre de dominio NIS del sistema y         |
   |                | utilizando RPC se conecta con el servidor. ypbind es  |
   | ypbind         | la parte central de la comunicacion cliente servidor  |
   |                | del sistema NIS; si ypbind muere en una maquina       |
   |                | cliente, dicha maquina no podra acceder al servidor   |
   |                | NIS.                                                  |
   |----------------+-------------------------------------------------------|
   |                | Debe ejecutarse solamente en los servidores NIS; se   |
   |                | trata del proceso servidor de NIS. Si ypserv(8)       |
   |                | muere, el servidor no sera capaz de responder a       |
   |                | peticiones NIS (no obstante, si se definen servidores |
   |                | NIS esclavos la situacion puede recuperarse). Existen |
   | ypserv         | algunas implementaciones de NIS (no es el caso de     |
   |                | FreeBSD) que no intentan conectarse con otro servidor |
   |                | si el servidor con otro servidor si el servidor que   |
   |                | se estaba que se estaba utilizando muere. A menudo lo |
   |                | unico que se puede hacer en estos casos es reiniciar  |
   |                | el servidor (el proceso o la propia maquina) o el     |
   |                | proceso ypbind del cliente.                           |
   |----------------+-------------------------------------------------------|
   |                | Otro proceso que solo debe ejecutarse en el servidor  |
   |                | maestro de NIS; se trata de un daemon que permite a   |
   | rpc.yppasswdd  | los clientes de NIS modificar las contrasenas de los  |
   |                | usuarios. Si no se ejecuta este daemon los usuarios   |
   |                | tendran que entrar en el servidor maestro de NIS para |
   |                | cambiar sus contrasenas alli.                         |
   +------------------------------------------------------------------------+

  29.9.3. ?Como funciona?

   Existen tres tipos de maquinas dentro del entorno NIS: los servidores
   maestros, los servidores esclavos y los clientes de NIS. Los servidores
   actuan como repositorios centrales para almacenamiento de informacion de
   configuracion. Los servidores maestros mantienen una copia maestra de
   dicha informacion, mientras que los servidores esclavos mantienen copias
   de la informacion maestra por motivos de redundancia. Los servidores se
   encargan de transmitir la informacion necesaria a los clientes a peticion
   de estos ultimos.

   De esta forma se pueden compatir mucha informacion contenida en varios
   archivos. Los ficheros master.passwd, group y hosts normalmente se
   comparten a traves de NIS. Siempre que un proceso en un cliente necesita
   informacion que, en caso de no utilizar NIS, se podria recuperar de
   ficheros locales, en este caso se envia una solicitud al servidor NIS con
   el que nos encontramos asociados.

    29.9.3.1. Clases de maquinas

     * Servidor de NIS maestro. Este servidor, semejante a un controlador de
       dominio primario de Windows NT(R) mantiene todos los archivos que
       utilizan los clientes. Los ficheros passwd, group y algunos otros se
       encuentran ubicados en el servidor maestro.

  Nota:

       Resulta posible configurar una maquina para que actue como servidor
       NIS maestro para mas de un dominio NIS. No obstante esta configuracion
       no se va a tratar en esta introduccion, en la cual asumimos un entorno
       NIS de tamano relativamente pequeno.

     * Servidores de NIS esclavos. Semejantes a los controladores de backup
       de Windows NT(R), los servidores NIS esclavos se utilizan para
       proporcionar redundancia en entornos de trabajo donde la
       disponibilidad del servicio resulta muy importante. Ademas se utilizan
       para distribuir la carga que normalmente soporta un servidor maestro:
       los clientes de NIS siempre se asocian con el servidor de NIS que
       posee mejor tiempo de respuesta, y esto y esto tambien incluye a los
       servidores de NIS esclavos.

     * Clientes NIS. Los clientes NIS, de forma semejante a las estaciones de
       trabajo de Windows NT(R), se validan contra un servidor NIS (en el
       caso de Windows NT(R) se validan contra un controlador de dominio)
       para acceder al sistema.

  29.9.4. Uso de NIS/YP

   Esta seccion trata sobre como configurar y poner en funcionamiento un
   entorno de NIS sencillo.

  Nota:

   Esta seccion supone que se esta utilizando utilizando FreeBSD 3.3 o
   posteriores. Las instrucciones dadas aqui probablemente funcionen tambien
   en cualquier version de FreeBSD superior a la 3.0 pero no podemos
   garantizar que esto sea asi.

    29.9.4.1. Planificacion

   Vamos a suponer que somos el administrador de un pequeno laboratorio de
   una universidad. En este laboratorio, compuesto por 15 maquinas FreeBSD,
   actualmente no existe ningun punto de administracion centralizada; cada
   maquina posee sus sus propios /etc/passwd y /etc/master.passwd. Estos
   ficheros se encuentran sincronizados el uno con el otro mediante
   intervencion manual; por tanto, cuando queramos anadir un usuario a
   nuestro laboratorio tendremos que ejecutar adduser en todas las maquinas.
   Claramente esta situacion tiene que cambiar, de tal forma que hemos
   decidido crear un dominio NIS en el laboratorio usando dos maquinas como
   servidores NIS.

   La configuracion de nuestro laboratorio deberia ser algo parecido a lo
   siguiente:

   +------------------------------------------------------------------------+
   | Nombre de maquina | Direccion IP  |               Papel                |
   |-------------------+---------------+------------------------------------|
   | ellington         | 10.0.0.2      | servidor NIS maestro               |
   |-------------------+---------------+------------------------------------|
   | coltrane          | 10.0.0.3      | Servidor NIS esclavo               |
   |-------------------+---------------+------------------------------------|
   | basie             | 10.0.0.4      | Estacion de trabajo del            |
   |                   |               | profesorado                        |
   |-------------------+---------------+------------------------------------|
   | bird              | 10.0.0.5      | maquina cliente                    |
   |-------------------+---------------+------------------------------------|
   | cli[1-11]         | 10.0.0.[6-17] | Resto de maquinas clientes         |
   +------------------------------------------------------------------------+

   Si se esta configurando un esquema de NIS por primera vez es una buena
   idea detenerse a pensar como queremos implantar el sistema. Existen varias
   decisiones que se deben tomar independientemente del tamano de nuestra
   red.

      29.9.4.1.1. Eleccion del nombre de dominio NIS

   Este nombre puede no ser el "nombre de dominio" al que estamos
   acostumbrados. Resulta mas preciso llamarlo "nombre de dominio NIS".
   Cuando un cliente genera peticiones de NIS que llegan a todas las maquinas
   (broadcast) solicitando informacion se incluye el nombre de dominio NIS
   que tiene configurado. De esta forma, varios servidores de dominios
   distintos situados en la misma red pueden discriminar las peticiones
   recibidas. Se puede pensar en el nombre de dominio NIS como un
   identificador de grupos de maquinas que se encuentran relacionados
   administrativamente de alguna forma.

   Algunas organizaciones eligen utilizar su nombre de dominio de Internet
   como nombre de dominio NIS. Esto no se recomienda ya que puede causar
   confusion cuando se intentan depurar problemas de red. El nombre de
   dominio NIS deberia ser un nombre unico dentro de nuestra red y resulta
   mas util aun si el nombre elegido puede describir de alguna forma al
   conjunto de maquinas que representa. Por ejemplo el departamento de arte
   de la empresa Acme puede utilizar como nombre de dominio "acme-art". En
   nuestro ejemplo hemos utilizado el nombre test-domain.

   No obstante algunos sistemas operativos (de forma notable SunOS(TM))
   utilizan como nombres de dominio nombres de Internet. Si se poseen
   maquinas con esta restriccion no queda mas remedio que utilizar los
   nombres de dominio de Internet como nombres de dominio NIS.

      29.9.4.1.2. Requisitos fisicos de los servidores

   Existen varias cosas que debemos tener en cuenta cuando se selecciona una
   maquina para actuar como servidor NIS. Una de las caracteristicas
   desafortunadas del servicio de paginas amarillas es el alto nivel de
   dependencia que llegan a tener los clientes respecto del servidor de NIS.
   Si el cliente no puede contactar con el servidor NIS normalmente la
   maquina se queda en un estado totalmente inutilizable. La carencia de
   informacion de usuarios y grupos provoca que las maquinas se bloqueen. Con
   esto en mente debemos debemos asegurarnos de escoger un servidor de NIS
   que no se reinicie de forma habitual o uno que no se utilice para para
   desarrollar. Si se dispone de una red con poca carga puede resultar
   aceptable colocar el servidor de NIS en una maquina donde se ejecuten
   otros servicios pero en todo momento se debe tener presente que si por
   cualquier motivo el servidor de NIS quedara inutilizable afectaria a todas
   las maquinas de forma negativa.

    29.9.4.2. Servidores NIS

   Las copias canonicas de toda la informacion que mantiene el sistema de
   paginas amarillas se almacenan en una unica maquina denominada servidor
   maestro de NIS. Las bases de datos utilizadas para almacenar la
   informacion se denominan mapeos NIS. En FreeBSD estas asociaciones o
   mapeos se almacenan en el directorio /var/yp/[nombrededominio] donde
   [nombrededominio] es el nombre del dominio de NIS que el servidor
   gestiona. Un unico servidor NIS puede gestionar varios dominios al mismo
   tiempo de forma que resulta posible tener varios directorios como el
   anterior, uno por cada dominio soportado. Cada dominio posee su conjunto
   de mapeos independiente y propio.

   Los servidores maestro y esclavos manejan todas las peticiones de a traves
   del daemon ypserv. ypserv se responsabiliza de recibir peticiones de los
   clientes NIS. Estas peticiones se traducen a una ruta dentro del servidor.
   Esta ruta localiza un fichero de base de datos determinado del servidor de
   NIS, y finalmente ypserv se encarga de transmitir la informacion de dicha
   base de datos de vuelta al cliente que la solicito.

      29.9.4.2.1. Configuracion de un servidor de NIS maestro

   La configuracion de un servidor de NIS maestro puede resultar
   relativamente sencilla dependiendo de las necesidades que se tengan.
   FreeBSD viene preconfigurado por defecto con un servicio NIS. Todo lo que
   necesitamos es anadir la siguiente linea en /etc/rc.conf y FreeBSD se
   encarga del resto.

    1. nisdomainname="test-domain"

       Esta linea establece el nombre de dominio NIS como test-domain, cuando
       se realiza la configuracion de la red (por ejemplo, despues de un
       reinicio).

    2. nis_server_enable="YES"

       Esta variable indica a FreeBSD que ejecute los procesos necesarios
       para actuar como un servidor de NIS la proxima vez que se configure el
       subsistema de red.

    3. nis_yppasswdd_enable="YES"

       Esto permite activar el daemon rpc.yppasswdd el cual, como se ha
       mencionado anteriormente, permite a los usuarios realizar cambios de
       contrasena desde las maquinas clientes de NIS.

  Nota:

   Dependiendo de la configuracion de NIS podemos necesitar anadir algunas
   entradas mas. Consulte la seccion sobre servidores NIS que tambien actuan
   como clientes, mas adelante en el texto, para saber mas sobre esto.

   Una vez hecho esto todo lo que tenemos que hacer es ejecutar /etc/netstart
   como superusuario. Esta orden realiza los pasos de configuracion
   necesarios utilizando los valores de las variables definidas en
   /etc/rc.conf.

      29.9.4.2.2. Inicializacion de los mapeos de NIS

   Las asociaciones o mapeos de NIS no son mas que ficheros de base de datos.
   Estos ficheros se generan a partir de los ficheros de configuracion
   contenidos en el directorio etc/ excepto para el caso del fichero
   etc/master.passwd. Esto es asi por una buena razon ya que no suele ser
   buena idea propagar las contrasenas de root y de otras cuentas de
   administracion a todos los servidores NIS del dominio. servidores NIS del
   dominio. Asi, antes de inicializar los mapeos se debe ejecutar:

 # cp /etc/master.passwd /var/yp/master.passwd
 # cd /var/yp
 # vi master.passwd

   Se deben borrar todas las entradas que hagan referencia a cuentas del
   sistema (bin, tty, kmem, games, etc), junto con cualquier cuenta que no
   deseemos que se transmita a los clientes NIS (por ejemplo la cuenta de
   root y cualquier otra cuenta con UID 0 (el del superusuario)).

  Nota:

   Asegurese de que /var/yp/master.passwd no se puede leer ni por grupos ni
   por el resto de usuarios (modo 600). Utilice chmod en caso de necesidad.

   Una vez hecho esto es hora de inicializar las asociaciones de NIS. FreeBSD
   incluye un "script" denominado ypinit para realizar esta tarea (consulte
   su pagina del manual para obtener mas informacion). Recuerde que este
   "script" se encuentra disponible en la mayoria de los sistemas UNIX(R),
   pero no en todos. En sistemas Digital UNIX/Compaq Tru64 UNIX se denomina
   ypsetup. Debido a que se pretende generar asociaciones para un servidor
   NIS maestro vamos a ejecutar ypinit con la opcion -m. A modo de ejemplo,
   suponiendo que todos los pasos comentados anteriormente se han realizado
   con exito, ejecute:

 ellington# ypinit -m test-domain
 Server Type: MASTER Domain: test-domain
 Creating an YP server will require that you answer a few questions.
 Questions will all be asked at the beginning of the procedure.
 Do you want this procedure to quit on non-fatal errors? [y/n: n] n
 Ok, please remember to go back and redo manually whatever fails.
 If you don't, something might not work.
 At this point, we have to construct a list of this domains YP servers.
 rod.darktech.org is already known as master server.
 Please continue to add any slave servers, one per line. When you are
 done with the list, type a <control D>.
 master server   :  ellington
 next host to add:  coltrane
 next host to add:  ^D
 The current list of NIS servers looks like this:
 ellington
 coltrane
 Is this correct?  [y/n: y] y

 [..salida de la generacion de mapeos..]

 NIS Map update completed.
 ellington has been setup as an YP master server without any errors.

   ypinit deberia haber creado el fichero /var/yp/Makefile a partir de
   /var/yp/Makefile.dist. Una vez creado este archivo presupone que se esta
   usando un entorno NIS con un unico servidor utilizando solamente maquinas
   FreeBSD. Debido a que test-domain posee tambien un servidor NIS esclavo se
   debe editar el fichero var/yp/Makefile:

 ellington# vi
               /var/yp/Makefile

   Se debe comentar la linea que dice:

 NOPUSH = "True"

   (si es que no se encuentra ya comentada).

      29.9.4.2.3. Configuracion de un servidor NIS esclavo

   La configuracion de un servidor NIS esclavo resulta ser incluso mas
   sencilla que la del maestro. Basta con entrar en el servidor esclavo y
   editar /etc/rc.conf de foma semejante a como se realizo en el apartado
   anterior. La unica diferencia consiste en que ahora debemos utilizar la
   opcion -s cuando ejecutemos ejecutemos ypinit. A continuacion del
   parametro -s se debe especificar el nombre del servidor maestro de modo
   que la orden tendria que ser algo parecido a esto:

 coltrane# ypinit -s ellington test-domain

 Server Type: SLAVE Domain: test-domain Master: ellington

 Creating an YP server will require that you answer a few questions.
 Questions will all be asked at the beginning of the procedure.

 Do you want this procedure to quit on non-fatal errors? [y/n: n]  n

 Ok, please remember to go back and redo manually whatever fails.
 If you don't, something might not work.
 There will be no further questions. The remainder of the procedure
 should take a few minutes, to copy the databases from ellington.
 Transferring netgroup...
 ypxfr: Exiting: Map successfully transferred
 Transferring netgroup.byuser...
 ypxfr: Exiting: Map successfully transferred
 Transferring netgroup.byhost...
 ypxfr: Exiting: Map successfully transferred
 Transferring master.passwd.byuid...
 ypxfr: Exiting: Map successfully transferred
 Transferring passwd.byuid...
 ypxfr: Exiting: Map successfully transferred
 Transferring passwd.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring group.bygid...
 ypxfr: Exiting: Map successfully transferred
 Transferring group.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring services.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring rpc.bynumber...
 ypxfr: Exiting: Map successfully transferred
 Transferring rpc.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring protocols.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring master.passwd.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring networks.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring networks.byaddr...
 ypxfr: Exiting: Map successfully transferred
 Transferring netid.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring hosts.byaddr...
 ypxfr: Exiting: Map successfully transferred
 Transferring protocols.bynumber...
 ypxfr: Exiting: Map successfully transferred
 Transferring ypservers...
 ypxfr: Exiting: Map successfully transferred
 Transferring hosts.byname...
 ypxfr: Exiting: Map successfully transferred

 coltrane has been setup as an YP slave server without any errors.
 Don't forget to update map ypservers on ellington.

   En estos momentos debemos tener un nuevo directorio llamado
   /var/yp/test-domain. Las copias de los mapeos del servidor maestro se
   almacenan en dicho directorio. Es nuestra responsabilidad como
   administradores asegurar que dichas copias permanecen actualizadas en todo
   momento. La siguiente entrada en el archivo /etc/crontab del servidor
   esclavo se encarga de realizar esta tarea:

 20      *       *       *       *       root   /usr/libexec/ypxfr passwd.byname
 21      *       *       *       *       root   /usr/libexec/ypxfr passwd.byuid

   Estas dos lineas obligan al servidor esclavo a sincronizar los mapeos con
   el servidor maestro. Estas entradas no son obligatorias ya que el servidor
   maestro siempre intenta comunicar cualquier cambio que se produzca en sus
   asociaciones a todos los servidores esclavos ya que la informacion de,
   esclavos, ya que la informacion de, por ejemplo, contrasenas es de vital
   importancia para el funcionamiento de los sistemas que dependen del
   servidor. No obstante es una buena idea obligar a que se realicen estos
   cambios mediante las entradas anteriores. Esto resulta ser incluso mas
   importante en redes de sobrecargadas donde las actualizaciones de
   asociaciones pueden algunas veces no llegar a realizarse de forma
   completa.

   A continuacion se ejecuta /etc/netstart en el servidor esclavo de igual de
   igual forma que se hizo con el servidor maestro; esto relanza de nuevo el
   servidor de NIS.

    29.9.4.3. Clientes NIS

   Un cliente de NIS establece lo que se conoce con el nombre de asociacion
   (bind en ingles) con un servidor NIS NIS determinado utilizando el daemon
   ypbind. ypbind comprueba el dominio por defecto del sistema (especificado
   mediante domainname) y comienza a enviar peticiones RPC a todos los
   elementos de la red local (broadcast). Estas peticiones especifican el
   nombre del dominio con el que se quiere establecer la asociacion. Si esta
   peticion alcanza una peticion alcanza un servidor NIS configurado para
   servir dicho dominio el servidor responde a la peticion e ypbind
   almacenara la direccion de dicho servidor. Si existen varios servidores
   disponibles (un maestro y varios esclavos, por ejemplo), ypbind utilizara
   la direccion del primero en responder. A partir de este punto el cliente
   dirigira el resto de sus peticiones NIS directamente a la direccion IP
   almacenada. Ocasionalmente ypbind envia un "ping" sobre el servidor para
   comprobar que en efecto se encuentra funcionando. Si no se recibe
   contestacion al ping dentro de un espacio de tiempo determinado ypbind
   marca el dominio como "sin asociar" y comienza de nuevo a inundar la red
   con la esperanza de localizar algun otro servidor NIS.

      29.9.4.3.1. Configuracion de un cliente NIS

   La configuracion de un cliente FreeBSD de NIS resulta ser una operacion
   extremadamente sencilla.

    1. Editar el fichero /etc/rc.conf y anadir las siguientes lineas para
       establecer el nombre de dominio NIS y para que se ejecute ypbind al
       arranque de la red:

 nisdomainname="test-domain"
 nis_client_enable="YES"

    2. Para importar todas las entradas de contrasenas del servidor de NIS
       hay que eliminar todas las cuentas de usuario de /etc/master.passwd y
       utilizar vipw para anadir la siguiente linea al final de dicho
       fichero:

 +:::::::::

  Nota:

       Esta linea permite que cualquiera abra una cuenta en local, siempre
       que dicha cuenta se encuentre definida en las asociaciones de cuentas
       y contrasenas del servidor NIS. Existen varias formas de configurar
       los clientes NIS modificando esta linea. Consulte la seccion sobre
       netgroups que se encuentra mas adelante en este mismo texto. Si quiere
       saber mas puede consultar el libro de O'Reilly Managing NFS and NIS.

  Nota:

       Se debe mantener al menos una cuenta local (por ejemplo, una cuenta
       que no se importe a traves de NIS) en el fichero /etc/master.passwd y
       ademas dicha cuenta deberia ser miembro del grupo wheel. Si algo va
       mal con el procedimiento descrito esta cuenta se puede utilizar para
       entrar en la maquina cliente de forma remota para posteriormente
       convertirse en superusuario e intentar solucionar el problema.

    3. Para importar todas las entradas de grupo posibles del servidor NIS se
       debe anadir la siguiente linea al fichero /etc/group:

 +:*::

   Despues de completar estos pasos deberimos ser capaces de ejecutar ypcat
   passwd y ver la asociacion de contrasenas que se encuentra en el servidor
   de NIS

  29.9.5. Seguridad en NIS

   En general cualquier usuario remoto puede realizar peticiones de RPC a
   ypserv(8) y recuperar los contenidos de las asociaciones de NIS siempre y
   cuando el usuario remoto conozca el nombre de dominio de NIS. Para evitar
   este tipo de transacciones no autorizadas, ypserv(8) soporta una
   caracteristica denominada "securenets" la cual se puede utilizar para
   limitar el acceso a un determinado conjunto de maquinas. En el arranque
   ypserv(8) intenta cargar la informacion de "securenets" a partir de un
   fichero denominado /var/yp/securenets.

  Nota:

   Esta ruta de fichero varia dependiendo del camino especificado con la
   opcion -p. Dicho fichero contiene entradas compuestas de, por un lado, un
   rango de red y por otro una mascara de red, separados por espacios en
   blanco. Las lineas que comienzan por "#" se consideran comentarios. A
   continuacion se muestra un ejemplo de un fichero "securenet":

 # admitir conexiones desde localhost -- obligatorio
 127.0.0.1     255.255.255.255
 # admitir conexiones desde cualquier host
 # on the 192.168.128.0 network
 192.168.128.0 255.255.255.0
 # admitir conexiones desde cualquier host
 # between 10.0.0.0 to 10.0.15.255
 # esto incluye las maquinas en el 'testlab'
 10.0.0.0      255.255.240.0

   Si ypserv(8) recibe una peticion de una direccion que coincide con alguna
   de las reglas especificadas en el fichero se procesa la peticion. Si no
   existe ninguna coincidencia la peticion se rechaza y se graba un mensaje
   de aviso. Si el archivo /var/yp/securnets no existe ypserv acepta
   conexiones de cualquier maquina.

   El programa ypserv tambien posee soporte para el paquete de Wietse Venema
   denominado tcpwrapper. Este paquete permite utilizar los ficheros de
   configuracion de tcpwrapper para realizar control de acceso en lugar de
   utilizar var/yp/securenets.

  Nota:

   Aunque ambos mecanismos de control de acceso proporcionan un grado de
   seguridad mayor que no utilizar nada resultan vulnerables a ataques de
   "falsificacion de IPs". El cortafuegos de la red donde se implanta el
   servicio de NIS deberia encargarse de bloquear el trafico especifico de
   dicho servicio.

   Los servidores que utilizan /var/yp/securenets pueden no prestar servicio
   a clientes NIS legitimos cuando se trabaja con implementaciones arcaicas
   de TCP/IP. Algunas de estas implementaciones ponen a cero todos los bits
   de maquina cuando se realizan broadcast y/o pueden fallar al especificar
   la mascara de red en el mismo caso, por citar algunos ejemplos. Mientras
   que algunos de estos problemas se pueden solucionar variando la
   configuracion del cliente en otros casos podemos vernos obligados a
   prescindir del cliente en cuestion o a prescindir del fichero
   var/yp/securenets.

   Se desaconseja la utilizacion de var/yp/securenets en un sistema con una
   implementacion arcaica de TCP/IP y puede suponer una perdida de
   funcionalidad para grandes zonas de la red.

   La utilizacion del paquete tcpwrapper incrementa la latencia del servidor
   NIS. El retardo adicional introducido puede ser lo suficientemente grande
   como para causar la expiracion de ciertos temporizadores de los programas
   clientes, especialmente en redes muy cargadas o con servidores de NIS
   lentos. Si se experimentan estos sintomas en varias maquinas clientes,
   puede ser conveniente convertir dichas maquinas en servidores NIS esclavos
   y obligarlas a asociarse con ellas mismas.

  29.9.6. Prohibir el acceso a determinados usuarios

   En nuestro laboratorio de ejemplo existe una maquina denominada basie que
   actua solo como una estacion de trabajo para el profesorado. No queremos
   sacar a esta maquina del dominio NIS pero nos damos cuenta de que el
   fichero passwd que se encuentra en el servidor de NIS posee cuentas tanto
   para profesores como para alumnos. ?Que podemos hacer?.

   Existe una forma de prohibir el acceso a determinados usuarios sobre una
   determinada maquina incluso aunque se encuentren dados de alta en la base
   de datos de NIS. Para realizar esto todo lo que debemos hacer es anadir
   -nombredeusuario al final del fichero /etc/master.passwd en la maquina
   cliente donde nombredeusuario es el nombre de usuario del usuario al que
   queremos prohibirle el acceso. Esto se debe realizar a poder ser mediante
   vipw ya que vipw realiza comprobaciones de seguridad sobre los cambios
   realizados y ademas se encarga de reconstruir la base de datos de
   contrasenas cuando se termina la edicion. Por ejemplo, si quisieramos
   prohibir el acceso al usuario bill a la maquina basie hariamos:

 basie# vipw
 [anadimos -bill al final y salimos]
 vipw: rebuilding the database...
 vipw: done

 basie# cat /etc/master.passwd

 root:[password]:0:0::0:0:The super-user:/root:/bin/csh
 toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
 daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
 operator:*:2:5::0:0:System &:/:/sbin/nologin
 bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
 tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
 kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
 games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
 news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
 man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
 bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
 uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
 xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
 pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
 nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
 +:::::::::
 -bill

 basie#

  29.9.7. Uso de Netgroups

   Escrito por Udo Erdelhoff.

   El metodo descrito en la seccion anterior funciona razonablemente bien si
   las reglas especiales se definen para un conjunto pequeno de usuarios y/o
   maquinas. En dominios admnistrativos grandes puede que se nos olvide
   prohibir el acceso a algun usuario en determinadas maquinas perdiendo de
   esta forma el principal beneficio de utilizar el servicio de paginas
   amarillas: administracion centralizada.

   La solucion creada por los desarrolladores de NIS se denomina netgroups.
   Su proposito se asemeja al concepto de grupos utilizado por los sistemas
   UNIX(R). La diferencia principal es la carencia de un identificador
   numerico y la habilidad para definir un "netgroup" que incluye tanto a
   cuentas de usuario como a otros "netgroups".

   Los netgroups se desarrollaron para gestionar redes grandes y y complejas
   con cientos de usuarios y maquinas. Por un lado esto es una Cosa Buena si
   nos encontramos en tal situacion pero por otro lado esta complejidad
   anadida hace que sea casi imposible de explicar a traves de ejemplos
   sencillos. El ejemplo que va a utilizar en lo que queda de seccion
   ilustrara este hecho.

   Vamos a suponer que la exitosa introduccion del servicio de paginas
   amarillas en nuestro laboratorio ha llamado la atencion de nuestros jefes.
   Nuestra siguiente tarea consiste en extender el dominio de NIS para que
   cubra otras maquinas del campus. Las tablas que se muestran a continuacion
   contienen los nombres de los nuevos usuarios y maquinas junto con una
   breve descripcion de ellas.

   +------------------------------------------------------------------------+
   | Nombre del Usuario/usuarios |               Descripcion                |
   |-----------------------------+------------------------------------------|
   | alpha, beta                 | Empleados normales del departamento de   |
   |                             | IT                                       |
   |-----------------------------+------------------------------------------|
   | charlie, delta              | Los nuevos aprendices del departamento   |
   |                             | de IT                                    |
   |-----------------------------+------------------------------------------|
   | echo, foxtrott, golf, ...   | Empleados normales                       |
   |-----------------------------+------------------------------------------|
   | able, baker, ...            | Los actuales internos                    |
   +------------------------------------------------------------------------+

   +------------------------------------------------------------------------+
   |   Nombre de la Maquina(s)   |               Descripcion                |
   |-----------------------------+------------------------------------------|
   | guerra, muerte, hambre,     | Los servidores mas importantes. Solo los |
   | peste                       | empleados de IT pueden entrar en estas   |
   |                             | maquinas                                 |
   |-----------------------------+------------------------------------------|
   | orgullo, avaricia, envidia, | Servidores de menor importancia. Todos   |
   | ira, lujuria, pereza        | los miembros del departamento de IT      |
   |                             | pueden entrar en ellos.                  |
   |-----------------------------+------------------------------------------|
   |                             | Estaciones de trabajo ordinarias. Solo   |
   | uno, dos, tres, cuatro, ... | los empleados actuales pueden utilizar   |
   |                             | estas maquinas.                          |
   |-----------------------------+------------------------------------------|
   |                             | Una maquina muy vieja sin ningun dato    |
   | trashcan                    | dato critico. Incluso los internos       |
   |                             | pueden utilizar esta maquina.            |
   +------------------------------------------------------------------------+

   Si se trata de implementar estas restricciones a nivel de usuario
   particular tendriamos que anadir una linea -usuario a cada fichero passwd
   del sistema para cada usuario que tuviera prohibido el acceso a dicho
   sistema. Si nos olvidamos de una sola entrada podrimos tener serios
   problemas. Puede ser factible realizar esta configuracion cuando se
   instala el servicio pero no obstante el riesgo que corremos al mantener
   este sistema de restricciones en el dia dia es muy alto. Despues de todo
   Murphy era un optimista.

   La gestion de esta situacion mediante netgroups ofrece varias ventajas.
   Cada usuario no tiene que tratarse de una forma individualizada; basta con
   anadir un usuario a uno o mas netgroups y posteriormente permitir o
   prohibir el acceso para todos los usuarios del netgroup. Si se anade una
   nueva maquina al servicio de NIS simplemente tendremos que definir
   restricciones de acceso para los netgroups definidos en la red. Si se
   anade un nuevo usuario bastara con anadir dicho usuario a un netgroup
   existente. Estos cambios son independientes unos de otros: se acabo la
   necesidad de aplicar la frase "por cada combinacion de usuario y maquina
   haga esto y esto". Si hemos planificado nuestro servicio de NIS
   cuidadosamente, solo tendremos que modificar un fichero de configuracion
   en un determinado servidor para permitir o denegar estos accesos.

   El primer paso consiste en la inicializacion de la asociacion o mapeo del
   netgroup. La orden de FreeBSD ypinit(8) no crea este mapeo por defecto
   pero una vez creado sera tenido en cuenta por la implementacion de NIS.
   Para crear una asociacion vacia simplemente escriba:

 ellington# vi /var/yp/netgroup

   y comienze a anadir contenido. En nuestro ejemplo necesitamos al menos
   cuatro netgroups: empleados de IT, aprendices de IT, empleados normales e
   internos.

 IT_EMP  (,alpha,test-domain)    (,beta,test-domain)
 IT_APP  (,charlie,test-domain)  (,delta,test-domain)
 USERS   (,echo,test-domain)     (,foxtrott,test-domain) \
         (,golf,test-domain)
 INTERNS (,able,test-domain)     (,baker,test-domain)

   IT_EMP, IT_APP etc. son los nombres de los netgroups. Cada conjunto
   delimitado por parentesis define una o mas cuentas como pertenecientes al
   netgroup. Existen tres campos definidos dentro de dichos de dichos grupos:

    1. El nombre de las maquinas donde los siguientes items son aplicables.
       Si no se especifica un nombre de maquina la entrada se aplica a todas
       las maquinas existentes. Si se especifica una maquina determinada
       entraremos en un mundo lleno de horrores y confusiones asi que mejor
       no hacerlo.

    2. El nombre de la cuenta que pertenece al netgroup que estamos
       definiendo.

    3. El dominio NIS donde reside la cuenta. Se pueden importar cuentas de
       otros dominios NIS (en caso de que usted pertenezca al extrano grupo
       de personas que gestionan mas de un dominio NIS.

   Cada uno de estos campos puede contener comodines. Consulte netgroup(5)
   para obtener mas detalles.

  Nota:

   No se deben utilizar nombres de los netgroups superiores a ocho
   caracteres, especialmente si las maquinas de nuestro dominio utilizan
   sistemas operativos variados. Los nombres son sensibles a las
   mayusculas/minusculas: se recomienda utilizar nombres en mayusculas para
   distinguirlos de los usuarios o maquinas.

   Algunos clientes de NIS (distintos de los clientes FreeBSD) no pueden
   gestionar netgroups con un gran numero de entradas. Por ejemplo algunas
   versiones antiguas de SunOS(TM) comienzan a presentar problemas si un
   netgroup contiene mas de quince entradas. Se puede solventar este problema
   creando varios sub-netgroups de como mucho quince usuarios y finalmente
   creando el verdadero netgroup compuesto por los sub-netgroups:

 BIGGRP1  (,joe1,domain)  (,joe2,domain)  (,joe3,domain) [...]
 BIGGRP2  (,joe16,domain)  (,joe17,domain) [...]
 BIGGRP3  (,joe31,domain)  (,joe32,domain)
 BIGGROUP  BIGGRP1 BIGGRP2 BIGGRP3

   Se puede repetir este proceso si se tienen que definir mas de 225 usuarios
   dentro de un unico netgroup.

   La activacion y distribucion de nuestro nuevo mapeo NIS resulta sencillo:

 ellington# cd /var/yp
 ellington# make

   Esto genera las tres asociaciones NIS netgroup, netgroup.byhost y
   netgroup.byuser. Utilice ypcat(1) para comprobar si el nuevo mapeo NIS se
   encuentra disponible:

 ellington% ypcat -k netgroup
 ellington% ypcat -k netgroup.byhost
 ellington% ypcat -k netgroup.byuser

   La salida de la primera orden deberia parecerse a los contenidos del
   fichero /var/yp/netgroup. La segunda orden no mostrara ninguna salida
   salvo que se hayan especificado netgroups especificos para maquinas. La
   tercera orden se puede utilizar para obtener la lista de los netgroups a
   los que petenece un determinado usuario.

   La configuracion del cliente es bastante simple. Para configurar el
   servidor guerra se debe ejecutar vipw(8) y sustituir la linea

 +:::::::::

   por

 +@IT_EMP:::::::::

   Ahora solo se importan los datos para los usuarios que se encuentren
   definidos en el netgroup IT_EMP; dichos datos se importan en la base de
   datos de contrasenas de guerra y solo se permite el acceso a estos
   usuarios.

   Por desgraciaesta informacion tambien se aplica a la funcion ~ del shell y
   a todas las rutinas que traducen nombres de usuarios con los
   correspondientes identificadores numericos de usuario (uid). En otras
   palabras, la orden cd ~ no va a funcionar, ls -l muestra el identificador
   numerico en lugar del nombre de usuario y find . -user joe -print produce
   un error de No such user ("Usuario desconocido"). Para solucionar esto
   debemos importar todas las entradas de usuario en la maquina cliente NIS
   pero sin permitirles el acceso.

   Esto se puede realizar anadiendo otra linea al fichero /etc/master.passwd.
   Esta linea deberia contener lo siguiente:

   +:::::::::/sbin/nologin, lo que significa que se "importen todas las
   entradas pero que se reemplace el shell por /sbin/nologin". Se puede
   sustituir cualquier campo de la entrada de contrasenas especificando un
   valor concreto para dicho campo en el fichero local local
   /etc/master.passwd.

  Aviso:

   Asegurese de que la linea +:::::::::/sbin/nologin se situa despues de
   +@IT_EMP:::::::::. Si esto no se cumple todas las cuentas de usuario
   importadas del servidor NIS poseeran /sbin/nologin como shell de acceso.

   Despues de este cambio si se introduce un nuevo empleado en el
   departamento de IT basta con cambiar una asociacion de NIS. Se podria
   aplicar una aproximacion similar para los servidores menos importantes
   sustituyendo la cadena +::::::::: en las versiones locales del fichero
   /etc/master.passwd por algo parecido a esto:

 +@IT_EMP:::::::::
 +@IT_APP:::::::::
 +:::::::::/sbin/nologin

   Las lineas correspondientes para las estaciones de trabajo normales
   podrian ser:

 +@IT_EMP:::::::::
 +@USERS:::::::::
 +:::::::::/sbin/nologin

   Y parece que todos nuestros problemas de gestion han desaparecido; hasta
   que unas semanas mas tarde se produce un cambio en la politica de gestion:
   el depatamento de IT comienza a alquilar interinos. Los interinos de IT
   pueden utilizar las estaciones de trabajo normales y los servidores menos
   importantes y los aprendices de IT pueden acceder a los servidores
   principales. No nos queda mas remedio que anadir un nuevo netgroup
   denominado IT_INTERN y anadir los nuevos interinos de IT a este nuevo
   grupo y comenzar a cambiar la la configuracion de cada maquina, una por
   una... Como dice el antiguo proverbio: "Errores en la planificacion
   centralizada conllevan grandes quebraderos de de cabeza globales".

   La habilidad que posee NIS para crear netgroups a partir de otros
   netgroups se puede utilizar para evitar la situacion anterior. Una
   posibilidad consiste en la creacion de netgroups basados en roles. Por
   ejemplo, se podria crear un netgroup denominado BIGSRV para definir las
   restricciones de acceso para los servidores importantes, otro grupo
   denominado USERBOX para las estaciones de trabajo... Cada uno de estos
   netgroups podria contener los netgroups que pueden acceder a dichas
   maquinas. Las nuevas entradas para nuestro mapeo NIS de netgroups seria
   algo asi:

 BIGSRV    IT_EMP  IT_APP
 SMALLSRV  IT_EMP  IT_APP  ITINTERN
 USERBOX   IT_EMP  ITINTERN USERS

   Este metodo de definir restricciones de acceso funciona razonablemente
   bien si podemos definir grupos de maquinas que posean restricciones
   semejantes. Por desgracia lo normal es que este caso resulta ser una
   excepcion mas que una regla. En la mayor parte de las ocasiones
   necesitaremos definir restricciones de acceso en funcion de maquinas
   individuales.

   Las definiciones de netgroups especificos para determinadas maquinas
   constituyen el segundo metodo que se puede utilizar para gestionar el
   cambio de politica del ejemplo que estamos explicando. En nuestro caso el
   fichero /etc/master.passwd de cada maquina contiene dos lineas que
   comienzan por "+". La primera de ellas anade un netgroup con las cuentas
   que pueden acceder a esa maquina, mientras que la segunda anade el resto
   de cuentas con shell el resto de cuentas con shell /sbin/nologin. Es una
   buena idea utilizar la version "todo en mayusculas" del nombre de maquina
   como el nombre del netgroup. En otras palabras, las lineas deberian ser
   como la siguiente:

 +@BOXNAME:::::::::
 +:::::::::/sbin/nologin

   Una vez que hemos completado esta tarea para todas las maquinas nunca mas
   resultara necesario modificar las versiones locales de /etc/master.passwd.
   Los futuros cambios se pueden gestionar simplemente modificando el mapeo o
   asociacion de NIS. A continuacion se muestra un mapeo de netgroups para el
   escenario que se esta explicando junto con algunas buenas ideas:

 # Definimos antes que nada los grupos de usuarios
 IT_EMP    (,alpha,test-domain)    (,beta,test-domain)
 IT_APP    (,charlie,test-domain)  (,delta,test-domain)
 DEPT1     (,echo,test-domain)     (,foxtrott,test-domain)
 DEPT2     (,golf,test-domain)     (,hotel,test-domain)
 DEPT3     (,india,test-domain)    (,juliet,test-domain)
 ITINTERN  (,kilo,test-domain)     (,lima,test-domain)
 D_INTERNS (,able,test-domain)     (,baker,test-domain)
 #
 # Ahora definimos unos pocos grupos basados en roles
 USERS     DEPT1   DEPT2     DEPT3
 BIGSRV    IT_EMP  IT_APP
 SMALLSRV  IT_EMP  IT_APP    ITINTERN
 USERBOX   IT_EMP  ITINTERN  USERS
 #
 # Y un grupo para tareas especiales
 # Permitimos a echo y golf acceso a nuestra maquina-anti-virus
 SECURITY  IT_EMP  (,echo,test-domain)  (,golf,test-domain)
 #
 # netgroups basados en maquinas
 # Nuestros servidores principales
 GUERRA   BIGSRV
 HAMBRE   BIGSRV
 # El usuario india necesita acceso a este servidor
 PESTE  BIGSRV  (,india,test-domain)
 #
 # Este es realmente importante y necesita mas restricciones de
 # acceso
 MUERTE     IT_EMP
 #
 # La maquina-anti-virus que mencionabamos mas arriba
 ONE       SECURITY
 #
 # Restringimos una maquina a un solo usuario
 TWO       (,hotel,test-domain)
 # [...otros grupos]

   Si estamos utilizando algun tipo de base de datos para gestionar cuentas
   de usuario debemos ser capaces de crear la primera parte del mapeo
   utilizando las herramientas proporcionadas por dicho sistema de base de
   datos. De este modo los nuevos usuarios tendran automaticamente derechos
   de acceso sobre las maquinas.

   Una ultima, por precaucion: puede no ser siempre aconsejable utilizar
   netgroups basados en maquinas. Si se estan desplegando, por ejemplo, un
   par de docenas o incluso cientos de maquinas identicas en laboratorios de
   estudiantes, es mejor utilizar netgroups basados en roles en lugar de
   netgroups basados en maquinas individuales para mantener el tamano de la
   asociacion NIS dentro de unos limites razonables.

  29.9.8. Conceptos importantes a tener muy en cuenta

   Todavia quedan un par de cosas que tendremos que hacer de forma distinta a
   lo comentado hasta ahora en caso de encontrarnos dentro de un entorno de
   NIS.

     * Cada vez que deseemos anadir un usuario a nuestro laboratorio debemos
       anadirlo al servidor NIS maestro unicamente y es tarea fundamental del
       administrador acordarse de reconstruir los mapeos NIS. Si nos
       olvidamos de esto el nuevo usuario sera incapaz de acceder a ninguna
       maquina excepto al servidor NIS. Por ejemplo, si necesitaramos anadir
       el nuevo usuario jsmith al laboratorio tendriamos que ejecutar lo
       siguiente:

 # pw useradd jsmith
 # cd /var/yp
 # make test-domain

       Se puede ejecutar tambien adduser jsmith en lugar de pw useradd
       jsmith.

     * No introduzca las cuentas de administracion dentro de los mapeos de
       NIS. No es buena idea propagar cuentas y contrasenas de administracion
       a maquinas donde residen usuarios que normalmente no deberian poder
       acceder a dichas cuentas.

     * Mantenga el servidor maestro y esclavo de NIS seguros y minimize el
       tiempo de interrupcion del servicio. Si alguien fuera capaz de
       comprometer la integridad de estas maquinas o de apagarlas los
       usuarios del dominio no podrian acceder a sus cuentas en ningun
       sistema.

       Esto es la debilidad principal de cualquier sistema de administracion
       centralizada. Si no se protegen los servidores NIS tendremos frente a
       nosotros a una horda de usuarios bastante enfadados.

  29.9.9. Compatibilidad con NIS v1

   El servicio ypserv de FreeBSD puede servir tambien a clientes NIS v1. La
   implementacion de NIS de FreeBSD solo utiliza el protocolo NIS v2 aunque
   otras implementaciones incluyen soporte para el protocolo v1 por razones
   de compatibilidad con sistemas antiguos. Los daemones ypbind suministrados
   con estos sistemas tratan de establecer una asociacion con un servidor NIS
   version 1 aunque puede que nunca la lleguen a utilizar (y pueden continuar
   realizando busquedas mediante broadcast incluso cuando reciben una
   respuesta de un servidor version 2). Tenga muy presente que mientras se
   soportan las llamadas normales de clientes v1, la version de ypserv
   actualmente suministrada no gestiona peticiones de transferencia de mapeos
   a traves de la version 1; en consecuencia no se puede utilizar como
   maestro o esclavo junto con servidores de NIS antiguos que solo soporten
   el protocolo v1. Por suerte quedan muy pocos servidores de este estilo en
   funcionamiento hoy en dia.

  29.9.10. Servidores NIS que actuan tambien como clientes NIS

   Se debe tener cuidado cuando se ejecuta ypserv en un entorno
   multi-servidor donde las maquinas servidoras actuan tambien como maquinas
   clientes de NIS. Normalmente es una buena idea obligar a los servidores a
   que se asocien con ellos mismos mejor que permitirles emitir peticiones de
   asociacion en broadcast, lo que posiblemente terminara con los servidores
   asociados entre si. Se pueden producir extranos fallos si un servidor del
   que dependen otros deja de funcionar. Puede darse que los contadores de
   todos los clientes expiren e intenten asociarse a otro servidor, pero el
   retardo puede ser considerable y los fallos todavia podrin persistir
   debido a que los servidores se asocian continuamente los unos a los otros.

   Se puede obligar a una maquina a asociarse con un servidor en particular
   ejecutando ypbind con la opcion -S. Si no se quiere ejecutar esto
   manualmente cada vez que se reinice el servidor NIS se puede puede anadir
   la siguiente linea al fichero /etc/rc.conf:

 nis_client_enable="YES" # ejecuta tambien el soft cliente
 nis_client_flags="-S NIS domain,server"

   Consulte ypbind(8) para obtener mas informacion.

  29.9.11. Formatos de contrasenas

   Uno de los problemas mas comunes que se encuentra la gente a la hora de
   implantar un servicio de NIS es la compatibilidad del formato de las
   contrasenas. Si nuestro servidor de NIS utiliza contrasenas cifradas
   mediante DES solo podra aceptar clientes que utilicen DES. Por ejemplo, si
   poseemos clientes de NIS Solaris(TM) en nuestra red casi seguro que
   necesitaremos utilizar contrasenas cifradas mediante DES.

   Para comprobar que formato utilizan los servidores y los clientes, se
   puede mirar en /etc/login.conf. Si la maquina se configura para utilizar
   cifrado de contrasenas mediante DES, entonces la clase por defecto debe
   poseer una entrada como la siguiente:

 default:\
         :passwd_format=des:\
         :copyright=/etc/COPYRIGHT:\
         [Se han omitido otras entradas]

   Otros posibles valores para caracteristica de passwd_format pueden ser blf
   y md5 (para utilizar los algoritmos Blowfish y MD5 respectivamente).

   Se debe reconstruir la base de datos de acceso siempre que se modifique el
   fichero /etc/login.conf mediante la ejecucion de la siguiente orden como
   root:

 # cap_mkdb /etc/login.conf

  Nota:

   El formato de las contrasenas que ya se encuentran definidas en
   /etc/master.passwd no se actualizara hasta que el usuario cambie su
   contrasena, despues de que se haya reconstruido la base de datos de tipos
   de acceso.

   A continuacion para asegurarse de que las contrasenas se cifran con el
   formato seleccionado tambien debemos comprobar que la variable
   crypt_default dentro del fichero /etc/auth.conf da preferencia al formato
   de contrasena elegido. Por ejemplo cuando se utilizan contrasenas cifradas
   con DES la entrada debe ser:

 crypt_default   =       des blf md5

   Si se realizan los pasos anteriores en cada una de las maquinas clientes y
   servidoras de nuestro entorno NIS podemos asegurar que todas utilizan el
   mismo formato de contrasena dentro de nuestra red. Si se presentan
   problemas de validacion con determinados usuarios en una determinada
   maquina cliente se puede empezar a investigar sobre el asunto. Recuerde:
   si se quiere desplegar un servicio de paginas amarillas sobre un entorno
   de red heterogeneo probablemente se deba utilizar DES en todos los
   sistemas puesto que DES es el minimo comun denominador.

29.10. DHCP

   Escrito por Greg Sutter.

  29.10.1. ?Que es DHCP?

   DHCP, el Protocolo de Configuracion Dinamica de Maquinas ("Dynamic Host
   Configuration Protocol"), especifica un metodo para configurar
   dinamicamente los parametros de red necesarios para que un sistema pueda
   comunicarse efectivamente. FreeBSD utiliza la implementacion de DHCP
   proporcionada por el Internet Software Consortium (ISC) de tal forma que
   toda la informacion relativa a la configuracion de DHCP se basa en la
   distribucion proporcionada por el ISC.

  29.10.2. Contenido de esta seccions

   Esta seccion describe tanto los componentes de la parte servidora como los
   componentes de la parte cliente del sistema DHCP del ISC. El programa
   cliente, denominado forma parte por defecto de los sistemas FreeBSD y el
   programa servidor se puede instalar a partir del "port"
   net/isc-dhcp3-server. Las principales fuentes de informacion son las
   paginas de manual dhclient(8), dhcp-options(5) y dhclient.conf(5) junto
   con las referencias que se muestran a continuacion en esta misma seccion.

  29.10.3. Como funciona

   Cuando el cliente de DHCP, dhclient, se ejecuta en una maquina cliente,
   valga la redundancia, comienza a enviar peticiones "broadcast" solicitando
   informacion de configuracion. Por defecto estas peticiones se realizan
   contra el puerto UDP 68. El servidor responde a traves del puerto UDP 67
   proporcionando al cliente una direccion IP junto con otros parametros
   relevantes para el correcto funcionamiento del sistema en la red, tales
   como la mascara de red, el " router" por defecto y los servidores de DNS.
   Toda esta informacion se "presta" y es valida solo durante un determinado
   periodo de tiempo (configurado por el administrador del servidor de DHCP).
   De esta forma direcciones IP asignadas a clientes que ya no se encuentran
   conectados a la red pueden ser reutilizadas al pasar determinado periodo
   de tiempo.

   Los clientes de DHCP pueden obtener una gran cantidad de informacion del
   servidor. Se puede encontrar una lista completa en dhcp-options(5).

  29.10.4. Integracion dentro de los sistemas FreeBSD

   FreeBSD se integra totalmente con el cliente DHCP del ISC, dhclient. Este
   soporte se proporciona tanto en el proceso de instalacion como en la
   instalacion por defecto del sistema base obviando la necesidad de poseer
   un conocimiento detallado de aspectos relacionados con la configuracion de
   redes siempre y cuando se disponga de servicio de DHCP en la red dada.
   dhclient se incluye en todas las distribuciones de FreeBSD desde la
   version 3.2.

   sysinstall soporta DHCP. Cuando se configura la interfaz de red la primera
   pregunta es: " ?Quiere intentar configurar el interfaz mediante DHCP?". Si
   se responde afirmativamente se ejecutara dhclient y si tiene exito se
   procede con los siguientes pasos de configuracion rellenandose
   automaticamente las variables de arranque necesarias para completar la
   configuracion de la red.

   Existen dos cosas que se deben realizar de tal forma que nuestro sistema
   utilice la configuracion de red mediante DHCP al arrancar:

     * Asegurarse de que el dispositivo bpf se encuentra compilado en el
       kernel. Para ello basta anadir device bpf (pseudo-device bpf en los
       sistemas FreeBSD 4.X) al fichero de configuracion del kernel y
       recompilarlo e instalarlo. Para mas informacion sobre la construccion
       de nucleos consulte Capitulo 8, Configuracion del kernel de FreeBSD.

       El dispositivo bpf se encuentra activado por defecto dentro del
       fichero de configuracion del nucleo (GENERIC que encontrara en su
       sistema FreeBSD de forma que si no se esta utilizando un fichero de
       configuracion del nucleo especifico (hecho a medida y/o por usted) no
       es necesario crear uno nuevo y se puede utilizar directamente GENERIC.

  Nota:

       Para aquellas personas especialmente preocupadas por la seguridad
       debemos advertir de que el dispositivo bpf es el dispositivo que las
       aplicaciones de captura de paquetes utilizan para acceder a los mismos
       (aunque dichas aplicaciones deben ser ejecutadas como root). DHCP
       requiere la presencia de bpf pero si la seguridad del sistema es mas
       importante que la configuracion automatica de la red no se recomienda
       instalar bpf en el nucleo.

     * Editar el fichero /etc/rc.conf para para incluir lo siguiente:

 ifconfig_fxp0="DHCP"

  Nota:

       Asegurese de sustituir fxp0 con el nombre de interfaz que desea que se
       configure dinamicamente, como se describe en Seccion 11.1,
       "Configuracion de Tarjetas de Red".

       Si se utiliza una ubicacion distinta para dhclient o si se desea
       anadir opciones adicionales a dhclient se puede incluir, adaptandolo a
       las condiciones particulares de cada usuario, lo siguiente:

 dhcp_program="/sbin/dhclient"
 dhcp_flags=""

   El servidor de DHCP (dhcpd) forma parte del "port" net/isc-dhcp3-server.
   Este " port" tambien contiene la documentacion de ISC DHCP.

  29.10.5. Ficheros

     * /etc/dhclient.conf

       dhclient necesita un fichero de configuracion denominado
       /etc/dhclient.conf. Normalmente este fichero solo contiene comentarios
       de forma que las opciones que se definen por defecto son
       razonablemente inocuas. Este fichero de configuracion se describe en
       la pagina de manual de dhclient.conf(5).

     * /sbin/dhclient

       dhclient se encuentra enlazado de forma estatica y reside en /sbin. La
       pagina de manual de dhclient(8) proporciona mas informacion sobre la
       orden dhclient.

     * /sbin/dhclient-script

       dhclient-script es el " script" de configuracion del cliente de DHCP
       especifico de FreeBSD. Tiene todos los detalles en dhclient-script(8)
       pero no necesita hacer ninguna modificacion en el para que todo
       funcione correctamente.

     * /var/db/dhclient.leases

       El cliente de DHCP mantiene una base de datos de prestamos en este
       fichero que se escribe de forma semejante a un "log". En
       dhclient.leases(5) puede consultar una explicacion ligeramente mas
       detallada.

  29.10.6. Lecturas recomendadas

   El protocolo DHCP se describe completamente en RFC 2131. Tambien tiene mas
   informacion en dhcp.org.

  29.10.7. Instalacion y configuracion de un servidor de DHCP

    29.10.7.1. Que temas se tratan en esta seccion

   Esta seccion proporciona informacion sobre como configurar un sistema
   FreeBSD de forma que actue como un servidor de DHCP utilizando la
   implementacion proporcionada por el Internet Software Consortium (ISC).

   La parte servidora del paquete proporcionado por el ISC no se instala por
   defecto en los sistemas FreeBSD pero se puede intalar como "port" desde
   net/isc-dhcp3-server. Consulte Capitulo 4, Instalacion de aplicaciones:
   <<packages>> y ports si necesita saber mas sobre la Coleccion de "ports".

    29.10.7.2. Instalacion del servidor DHCP

   Para configurar un sistema FreeBSD como servidor de DHCP debe asegurarse
   de que el dispositivo bpf(4) esta compilado dentro del nucleo. Para ello
   basta anadir device bpf ( pseudo-device bpf en FreeBSD 4.X) al fichero de
   configuracion del nucleo y reconstruir el mismo. Si necesita saber mas
   sobre el proceso de compilar e instalar el nucleo consulte Capitulo 8,
   Configuracion del kernel de FreeBSD.

   El dispositivo bpf ya se encuentra activado en el fichero de configuracion
   GENERIC del nucleo que se facilita con FreeBSD de tal forma que no resulta
   imprescindible crear un nucleo a medida para ejecutar DHCP.

  Nota:

   Para aquellas personas especialmente preocupadas por la seguridad debemos
   advertir de que el dispositivo bpf es el dispositivo que las aplicaciones
   de captura de paquetes utilizan para acceder a los mismos (aunque dichas
   aplicaciones deben ser ejecutadas como root). DHCP requiere la presencia
   de bpf pero si la seguridad del sistema es mas importante que la
   configuracion automatica de la red no se recomienda instalar bpf en el
   nucleo.

   El siguiente paso consiste en editar el fichero de ejemplo dhcpd.conf que
   se crea al instalar el "port" net/isc-dhcp3-server. Por defecto el fichero
   se llama /usr/local/etc/dhcpd.conf.sample, asi que se debe copiar este
   fichero a /usr/local/etc/dhcpd.conf y a continuacion realizar todos los
   cambios sobre este ultimo.

    29.10.7.3. Configuracion del servidor de DHCP

   El fichero dhcpd.conf se compone de un conjunto de declaraciones que hacen
   referencia a maquinas y a subredes. Esto se entendera mejor mediante el
   siguiente ejemplo:

 option domain-name "ejemplo.com";1
 option domain-name-servers 192.168.4.100;2
 option subnet-mask 255.255.255.0;3

 default-lease-time 3600;4
 max-lease-time 86400;5
 ddns-update-style none;6

 subnet 192.168.4.0 netmask 255.255.255.0 {
   range 192.168.4.129 192.168.4.254;7
   option routers 192.168.4.1;8
 }

 host mailhost {
   hardware ethernet 02:03:04:05:06:07;9
   fixed-address mailhost.ejemplo.com;10
 }

   1  Esta opcion especifica el dominio que se proporciona a los clientes y   
      que dichos clientes utilizan como dominio de busqueda por defecto.      
      Consulte resolv.conf(5) si necesita mas informacion sobre que significa 
      el dominio de busqueda.                                                 
   2  Esta opcion especifica la lista de servidores de DNS (seperados por     
      comas) que deben utilizar los clientes.                                 
   3  La mascara de red que se proporciona a los clientes.                    
   4  Un cliente puede solicitar un determinado tiempo de vida para el        
      prestamo. En caso contrario el servidor asigna un tiempo de vida por    
      defecto mediante este valor (expresado en segundos).                    
   5  Este es el maximo tiempo que el servidor puede utilizar para realizar   
      prestamos a los clientes. Si un cliente solicita un tiempo mayor como   
      maximo se respondera con el valor aqui configurado, ignorandose la      
      peticion de tiempo del cliente.                                         
   6  Esta opcion especifica si el servidor de DHCP debe intentar actualizar  
      el servidor de DNS cuando se acepta o se libera un prestamo. En la      
      implementacion proporcionada por el ISC esta opcion es obligatoria.     
   7  Esto indica que direcciones IP se pueden utilizar para ser prestadas a  
      los clientes que las soliciten. Las direcciones IP pertenecientes a     
      este rango, incluyendo los extremos, se pueden entregar a los clientes. 
   8  Declara cual es la pasarela por defecto que se proporcionara a los      
      clientes.                                                               
   9  Especifica la direccion MAC de una maquina, de tal forma que el         
      servidor de DHCP pueda identificar a la maquina cuando realice una      
      peticion.                                                               
   10 Especifica que la maquina cliente deberia obtener siempre la misma      
      direccion IP. Recuerde que se puede utilizar un nombre de maquina para  
      esto ya que el servidor de DHCP resolvera el nombre por si mismo antes  
      de devolver la informacion al cliente.                                  

   Una vez que se ha acabado de configurar el fichero dhcpd.conf se puede
   proceder con la ejecucion del servidor mediante la siguiente orden:

 # /usr/local/etc/rc.d/isc-dhcpd.sh start

   Si posteriormente se necesitan realizar cambios en la configuracion
   anterior tenga en cuenta que el envio de la senal SIGHUP a la aplicacion
   dhcpd no provoca que se lea de nuevo la configuracion como suele ocurrir
   en la mayoria de los daemones. Tendra que enviar la senal SIGTERM para
   parar el proceso y posteriormente relanzar el daemon utilizando la orden
   anterior.

    29.10.7.4. Ficheros

     * /usr/local/sbin/dhcpd

       dhcpd se encuentra enlazado de forma estatica y reside en el
       directorio /usr/local/sbin. La pagina de manual dhcpd(8) que se
       instala con el "port" le proporcionara mas informacion sobre dhcpd.

     * /usr/local/etc/dhcpd.conf

       dhcpd necesita un fichero de configuracion, /usr/local/etc/dhcpd.conf.
       Este fichero contiene toda la informacion relevante que se quiere
       proporcionar a los clientes que la soliciten, junto con informacion
       relacionada con el funcionamiento del servidor. Este fichero de
       configuracion se describe en la pagina del manual dhcpd.conf(5) que
       instala el " port".

     * /var/db/dhcpd.leases

       El servidor de DHCP mantiene una base de datos de prestamos o
       alquileres dentro de este fichero, que presenta un formato de fichero
       de "log". La pagina del manual dhcpd.leases(5) que se instala con el
       "port" proporciona una descripcion ligeramente mas larga.

     * /usr/local/sbin/dhcrelay

       dhcrelay se utiliza en entornos de red avanzados donde un servidor de
       DHCP reenvia una peticion de un cliente hacia otro servidor de DHCP
       que se encuentra localizado en otra subred. Si se necesita esta
       funcionalidad se debe instalar el "port" net/isc-dhcp3-server. La
       pagina del manual dhcrelay(8) proporcionada por el "port" contiene mas
       detalles sobre esto.

29.11. DNS

   Enviado por Chern Lee.

  29.11.1. Resumen

   FreeBSD utiliza por defecto una version de BIND (Berkeley Internet Name
   Domain) que proporciona la implementacion mas comun del protocolo de DNS.
   DNS es el protocolo a traves del cual los nombres de maquinas se asocian
   con direcciones IP y viceversa. Por ejemplo una consulta preguntando por
   www.FreeBSD.org recibe una respuesta con la direccion IP del servidor web
   del Proyecto FreeBSD, mientras que una pregunta sobre ftp.FreeBSD.org
   recibe como respuesta la direccion IP correspondiente al servidor de FTP.
   El proceso inverso sucede de una forma similar. Una pregunta relativa a
   una determinada direccion IP se resuelve al nombre de la maquina que la
   posee. No se necesita ejecutar un servidor de DNS para poder realizar
   consultas y busquedas de DNS.

   El DNS se coordina de forma distribuida a traves de Internet utilizando un
   sistema en cierta forma complejo de servidores de nombres raiz autorizados
   y mediante otros servidores de nombres de menor escala que se encargan de
   replicar la informacion de dominios individuales con el objetivo de
   mejorar los tiempos de respuesta de busquedas reiteradas de la misma
   informacion.

   Este documento hace referencia a la version estable BIND 8.X. BIND 9.X se
   puede instalar a traves del "port" net/bind9.

   El protocolo de DNS se encuentra definido en la RFC1034 y la RFC1035.

   El Internet Software Consortium (www.isc.org) se encarga de de mantener el
   software de BIND.

  29.11.2. Terminologia

   Para comprender este documento se deben definir los siguientes terminos:

            Termino                             Definicion                    
   DNS directo (Forward DNS) Asociacion de nombres de maquinas con            
                             direcciones IP                                   
   Origen                    Se refiere al dominio cubierto por un            
                             determinado fichero de zona                      
   named, BIND, servidor de  Nombres tipicos que hacen referencia al paquete  
   nombres (name server)     servidor de nombres de BIND de FreeBSD           
                             Un proceso del sistema que utilizan las          
   Resolver                  aplicaciones para hacer preguntas al servidor de 
                             nombres.                                         
   DNS inverso (Reverse DNS) Lo contrario de lo que realiza el DNS directo;   
                             asocia direcciones IP con nombres de maquinas    
                             El comienzo de la jerarquia de zonas de          
                             Internet. Todas las zonas surgen a partir de una 
   Zona Raiz                 zona raiz de forma similar a como todos los      
                             directorios de un sistema de ficheros se         
                             encuentran a partir de un directorio raiz        
                             inicial.                                         
                             Un dominio individual, subdominio o porcion del  
   Zona                      DNS que se encuentra administrado por la misma   
                             autoridad.                                       

   Ejemplos de zonas:

     * . es la zona raiz

     * org. es una zona localizada bajo la zona raiz

     * ejemplo.org es una zona localizada bajo la zona org.

     * foo.ejemplo.org. es un subdominio o una zona ubicada bajo la zona
       ejemplo.org.

     * 1.2.3.in-addr.arpa es una zona que referencia a a todas las
       direcciones IP que se encuentran dentro del espacio de direcciones de
       3.2.1.*.

   Como se puede observar la parte mas especifica de una maquina aparece mas
   a la izquierda. Por ejemplo ejemplo.org es mas especifico que org. y del
   mismo modo org. es mas especifico que la zona raiz. El formato de cada
   parte del nombre de la maquina es muy similar al formato de un sistema de
   ficheros: el directorio /dev se encuentra dentro del directorio raiz, y
   asi sucesivamente.

  29.11.3. Razones para ejecutar un servidor de nombres

   Los servidores de nombres normalmente son de dos tipos: autoritarios y de
   cache.

   Se necesita un servidor de nombres autoritario cuando:

     * uno quiere proporcionar informacion de DNS al resto del mundo
       respondiendo con informacion autoritaria a las consultas recibidas.

     * un dominio, por ejemplo ejemplo.org, esta registrado y se necesita
       anadir nombres de maquinas bajo dicho dominio.

     * un bloque de direcciones IP necesita entradas de DNS inversas (de IP a
       nombre de maquina).

     * un servidor de nombres de "backup", llamado esclavo, debe responder a
       consultas cuando el servidor primario se encuentre caido o
       inaccesible.

   Se necesita un servidor cache cuando:

     * un servidor de DNS local puede responder mas rapidamente de lo que se
       haria si se tuviera que preguntar al servidor de nombres externo.

     * se desea reducir el trafico global de red (se ha llegado a comprobar
       que el trafico de DNS supone un 5% o mas del total del trafico que
       circula por Internet).

   Cuando se pregunta por www.FreeBSD.org el " resolver" normalmente pregunta
   al servidor de nombres del ISP de nivel superior y se encarga de recibir
   la respuesta. Si se utiliza un servidor de DNS cache local la pregunta
   solo se dirige una unica vez hacia el exterior. Dicha pregunta la realiza
   el servidor cache. Posteriores consultas sobre el mismo nombres son
   respondidas directamente por este servidor.

  29.11.4. Como funciona

   En FreeBSD el daemon de BIND se denomina named por razones obvias.

          Fichero                             Descripcion                     
   named                  El daemon de BIND                                   
   ndc                    El programa de control del daemon                   
   /etc/namedb            El directorio donde se almacena la informacion de   
                          las zonas de BIND                                   
   /etc/namedb/named.conf El archivo de configuracion del daemon              

   Los ficheros de zonas se encuentran normalmente bajo el directorio
   /etc/namedb y contienen la informacion que proporciona el servidor de
   nombres al resto de maquinas de Internet.

  29.11.5. Ejecucion de BIND

   Debido a que BIND se instala por defecto la configuracion resulta ser
   bastante sencilla.

   Para asegurarnos de que el daemon se ejecuta al inicio del sistema se
   deben anadir las siguientes modificaciones en /etc/rc.conf:

 named_enable="YES"

   Para arrancar el daemon de forma manual (una vez configurado)

 # ndc start

  29.11.6. Ficheros de configuracion

    29.11.6.1. Uso de make-localhost

   Asegurese de hacer los siguiente

 # cd /etc/namedb
 # sh make-localhost

   para que se cree el archivo de zona inversa /etc/namedb/localhost.rev de
   forma apropiada.

    29.11.6.2. /etc/namedb/named.conf

 // $FreeBSD$
 //
 // Consulte la pA!gina man de named(8) para mA!s detalles.  tiene
 // alguna vez la necesidad de configurar un servidor primario
 // asegA-oree de que entiende a la perfecciA^3n los detalles peliagudos
 // del funcionamiento del DNS.  Si hay errores, incluso triviales,
 // puede sufrir pA(c)rdidas de conectividad ogenerar cantidades ingentes
 // de trA!fico inA-otil hacia o desde Interne

 options {
         directory "/etc/namedb";

 // AdemA!s de con la lA!usula "forwarders" puedeobligar a su servidor
 // de nombres a que nunca lance bA-osquedas por su cuenta sino que
 // se las pida a sus "forwarders". Esto se hace del siguiente modo:
 //
 //      forward only;

 // Si su proveedor de acceso tiene a su alcance un servidor DNS
 // escriba aquA su direcciA^3n IP y descomente la lAneaPodrA! usar
 // su cachA(c) y por lo tanto reducir el trA!fico DNS de Internet.
 //

 /*
         forwarders {
                 127.0.0.1;
         };
 */

   Tal y como se dice en los comentarios del ejemplo para beneficiarnos de la
   cache se puede activar forwarders. En circunstancias normales un servidor
   de nombres busca de forma recursiva a traves de Internet tratando de
   localizar un servidor de nombres que sea capaz de responder una
   determinada pregunta. Si se activa esta opcion por defecto se pasa a
   preguntar primero al servidor de nombres especificado (servidor o
   servidores) pudiendo aprovecharse de la informacion de cache que dicho
   servidor tuviera disponible. Si el servidor de nivel superior al nuestro
   se encuentra congestionado puede merecer la pena la activacion de esta
   caracteristica de "redireccion" ya que se puede disminuir la carga de
   trafico que dicho servidor tiene que soportar.

  Aviso:

   La direccion IP 127.0.0.1 no funciona ai. Se debe cambiar esta direccion
   IP por un servidor de nombres valido.

         /*
          * Si hay un cortafuegos entre usted y los servidores de
          * nombres que quiere consultar tendrA! que descoentar la
          * siguiente directiva, "query-source".  Las versiones
          * anteriores de BIND siempre hacAan sus consultas a travA(c)s
          * del puerto 53 pero BIND 8.1 utiliza por defecto un puerto no
          * privilegiado.
          */
         // query-source address * port 53;

         /*
          * Si lo va a ejecutar en un "cajA^3n de arena" (o "sandbox")
          * tendrA! que declarar una uicaciA^3n diferente para el
          * fichero de volcado de named.
          */
         // dump-file "s/named_dump.db";
 };

 // Nota: lo siguiente serA! incluAdo en futuras versiones.
 /*
 host { any; } {
         topology {
                 127.0.0.0/8;
         };
 };
 */

 // La configuraciA^3n de secundarios se explica de modo secillo a
 // partir de aquA.
 //
 // Si activa un servidor de nombres local no olvide incluAr
 // 127.0.0.1 en su /etc/resolv.conf para que sea ese servidor el
 // primero al que se consulte.
 // AsegA-orese tambiA(c)n de activarlo en /etc/rc.con

 zone "." {
         type hint;
         file "named.root";
 };

 zone "0.0.127.IN-ADDR.ARPA" {
         type master;
         file "localhost.rev";
 };

 zone
 "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" {
         type master;
         file "localhost.rev";
 };

 // Nota: No use las direcciones IP que se muestran aquA, son falsas
 // y sA^3lo se usancomo demostraciA^3n y para una mejor comprensiA^3n.
 //
 // Ejemplo de entradas en la configuraciA^3n de secundarios.  Puede ser
 // conveniente convertirse en secundario al menos del dominio en cuya
 // zona estA! su dominio.  Cnsulte con su administrador de red para
 // que le facilite la direcciA^3n IP del servidor primario.
 //
 // No olvide incluAr la zona del bucle inverso (IN-ADDR.ARPA).  (Son
 // los primeros bytes de la direcciA^3n IP correspondiente, en orden
 // inverso, con ".IN-ADDR.ARPA" al final.)
 //
 // Antes de configurar una zona primara asegA-oresede haber comprendido
 // completamente cA^3mo funcionan DNS y BIND.  Hay errores que no son
 // visibles fA!cilmente.  La configuraciA^3n de un secundario es, por
 // el contrario, muchAsimo mA!s sencilla.
 //
 // Nota: No se limite a copiar los ejemplos de mA!s arriba. :-)
 // Utilice nombres y direcciones reales.
 //
 // ADVERTENCIA: FreeBSD ejecuta bind en un sandbok (observe los
 // parA!meros de named (named_flags) en rc.conf).  El directorio que
 // contiene las zonas secundarias debe tener permisos de escritura
 // para bind.  Le sugerimos la siguiente secuencia de ordenes:
 //
 //      mkdir /etc/namedb/s
 //      chown bind:bind /etc/namedb/s
 //      chmod 750 /etc/namedb/s

   Si quiere mas informacion sobre como ejecutar BIND en un "sandbox"
   consulte Ejecucion de named en un sandbox.

 /*
 zone "ejemplo.com" {
         type slave;
         file "s/ejemplo.com.bak";
         masters {
                 192.168.1.1;
         };
 };

 zone "0.168.192.in-addr.arpa" {
         type slave;
         file "s/0.168.192.in-addr.arpa.bak";
         masters {
                 192.168.1.1;
         };
 };
 */

   Dentro del fichero named.conf se muestran ejemplos de entradas de esclavo
   tanto para las zonas directas como para las inversas.

   Para cada nueva zona administrada se debe crear una entrada de zona dentro
   del fichero named.conf

   Por ejemplo la entrada de zona mas simple para el dominio ejemplo.org
   puede ser algo como esto:

 zone "ejemplo.org" {
         type master;
         file "ejemplo.org";
 };

   Esta zona es una zona maestra ( observe la linea de type, y mantiene la
   informacion de la zona en /etc/namedb/ejemplo.org tal como se indica en la
   linea de file.

 zone "ejemplo.org" {
         type slave;
         file "ejemplo.org";
 };

   En el caso del esclavo la informacion de la zona se transmite desde el
   servidor de nombres maestro y se almacena en el fichero especificado.
   Cuando el servidor maestro " muere" o no puede ser alcanzado el servidor
   de nombres esclavo puede responder a las peticiones debido a que posee la
   informacion de la zona.

    29.11.6.3. Ficheros de zona

   A continuacion se muestra un fichero de una zona maestra para el dominio
   ejemplo.org, que se encuentra ubicado en /etc/namedb/ejemplo.org:

 $TTL 3600

 example.org. IN SOA ns1.ejemplo.org. admin.ejemplo.org. (
                         5               ; Serial
                         10800           ; Refresh
                         3600            ; Retry
                         604800          ; Expire
                         86400 )         ; Minimum TTL

 ; DNS Servers
 @       IN NS           ns1.ejemplo.org.
 @       IN NS           ns2.ejemplo.org.

 ; Machine Names
 localhost       IN A    127.0.0.1
 ns1             IN A    3.2.1.2
 ns2             IN A    3.2.1.3
 mail            IN A    3.2.1.10
 @               IN A    3.2.1.30

 ; Aliases
 www             IN CNAME        @

 ; MX Record
 @               IN MX   10      mail.ejemplo.org.

   Tenga muy en cuenta que todo nombre de maquina que termina en "." es
   tratado como si fuera un nombre de maquina completo mientras que cualquier
   otro nombre sin el "." final se trata como una referencia relativa al
   dominio de origen de la zona. Por ejemplo www se traduce a www + origen.
   En nuestro fichero de zona ficticio nuestro origen es ejemplo.org de forma
   que www se convierte en www.ejemplo.org

   El formato de un fichero de zona es el siguiente:

 nombrederegistro IN tipodeentrada valor

   Los registros de DNS que mas se utilizan son:

   SOA

           Comienzo de Zona con Autoridad (Start Of zone Authority)

   NS

           Un servidor de nombres con autoridad para una una determinada zona

   A

           Una direccion IP de una maquina

   CNAME

           El nombre canonico de una maquina para definir un alias

   MX

           mail exchanger

   PTR

           Un puntero a un nombre de dominio (utilizados para definir el DNS
           inverso)

 ejemplo.org. IN SOA ns1.ejemplo.org. admin.ejemplo.org. (
                         5               ; Serial
                         10800           ; Refresh after 3 hours
                         3600            ; Retry after 1 hour
                         604800          ; Expire after 1 week
                         86400 )         ; Minimum TTL of 1 day

   ejemplo.org.

           el nomre de dominio, tambien el origen para el fichero de zona

   ns1.ejemplo.org.

           el servidor de nombres primario/autoritario para esta zona

   admin.ejemplo.org.

           la persona responsable de esta zona; observe que la direccion de
           correo electronico aparece con la @ sustituida por un punto.
           (<admin@ejemplo.org> se escribe admin.ejemplo.org)

   5

           el numero de serie del fichero. Este numero se debe incrementar
           cada vez que se modifique el fichero de zona. Muchos
           administradores prefieren un formato expresado del siguiente modo
           aaaammddss. 2001041002 significa (segun dicho formato) que el
           fichero se modifico por ultima vez el 04/10/2001 y se indica con
           los dos ultimos digitos (02) que es la segunda vez en el dia que
           se ha modificado el fichero. El numero de serie es importante ya
           que para avisar a los servidores de nombres esclavos de que se ha
           actualizado la zona.

 @       IN NS           ns1.ejemplo.org.

   Esta es una entrada de tipo NS. Cada servidor de nombres que contesta de
   forma autoritaria a las consultas de un determinado dominio debe tener una
   de estas entradas. El caracter @ se sustituye por ejemplo.org., es decir,
   se sustituye por el origen.

 localhost       IN A    127.0.0.1
 ns1             IN A    3.2.1.2
 ns2             IN A    3.2.1.3
 mail            IN A    3.2.1.10
 @               IN A    3.2.1.30

   El registro de tipo A hace referencia a nombres de maquinas . Como puede
   verse mas arriba ns1.ejemplo.org se resuelve a 3.2.1.2. Vemos que se
   utiliza otra vez el origen @, que significa que ejemplo.org se resuelve a
   3.2.1.30.

 www             IN CNAME        @

   Los registros de nombres canonicos se utilizan normalmente como alias de
   maquinas. En el ejemplo www es un alias de ejemplo.org (3.2.1.30). CNAMEs
   se puede utilizar para proporcionar alias de nombres de maquinas, o
   tambien para proporcionar un mecanismo de vuelta ciclica ("round robin")
   de un nombre de maquina mapeado a un determinado conjunto de maquinas
   intercambiables.

 @               IN MX   10      mail.ejemplo.org.

   El registro MX indica que servidores de correo se encargan de recibir
   correos para esta zona. mail.example.org es el nombre del servidor de
   correo y 10 significa la prioridad de dicho servidor.

   Se pueden especificar varios servidores de correo con prioridades de, por
   ejemplo,3, 2 y 1. Un servidor de correo que intenta entregar correo para
   el dominio ejemplo.org primero intentara contactar con el servidor
   especificado en el registro MX de mayor prioridad, despues con el
   siguiente y asi sucesivamente hasta que lo logre entregar.

   Para los ficheros de zona de in-addr.arpa (DNS inverso) se utiliza el
   mismo formato excepto que se especifican registros PTR en lugar de
   registros A o CNAME.

 $TTL 3600

 1.2.3.in-addr.arpa. IN SOA ns1.ejemplo.org. admin.ejemplo.org. (
                         5               ; Serial
                         10800           ; Refresh
                         3600            ; Retry
                         604800          ; Expire
                         3600 )          ; Minimum

 @       IN NS   ns1.ejemplo.org.
 @       IN NS   ns2.ejemplo.org.

 2       IN PTR  ns1.ejemplo.org.
 3       IN PTR  ns2.ejemplo.org.
 10      IN PTR  mail.ejemplo.org.
 30      IN PTR  ejemplo.org.

   Este fichero proporciona las asociaciones de direcciones IP con nombres de
   maquinas adecuadas para nuestro dominio ficticio.

  29.11.7. Servidor de nombres de cache

   Un servidor de nombres de tipo cache es un servidor de nombres que no es
   autoritario para ninguna zona. Simplemente realiza consultas por si mismo
   y recuerda las respuestas para futuros usos. Para configura uno de estos
   servidores se configura el servidor de la forma habitual pero se omite la
   inclusion de zonas.

  29.11.8. Ejecucion de named en una " Sandbox"

   Para obtener una mayor seguridad se puede ejecutar named(8) como un
   usuario sin privilegios y configurarlo mediante chroot(8) dentro del
   directorio especificado como el directorio del "sandbox". Esto hace que
   cualquier cosa que se encuentre fuera de dicho directorio resulte
   inaccesible para el daemon named. En caso de que se comprometiera la
   seguridad de named esta restriccion puede ayudar a limitar el dano
   sufrido. FreeBSD dispone por defecto de un usuario y un grupo destinado a
   este uso: bind.

  Nota:

   Hay quien recomienda que en lugar de configurar named con chroot es mejor
   configurarlo dentro de jail(8). En esta seccion no se va a explicar esa
   alternativa.

   Debido a que named no va a poder acceder a nada que se encuentre fuera del
   directorio " sandbox" (y esto incluye cosas tales como bibliotecas
   compartidas, "sockets" de "log", etc) se debe efectuar una serie de
   cambios para que named pueda funcionar con normalidad. En la siguiente
   lista se supone que la ruta del "sandbox" es /etc/namedb y que no se ha
   modificado anteriormente dicho directorio. Por favor, ejecute los pasos
   que se muestran a continuacion:

     * Cree todos los directorios que named espera tener a su disposicion:

 # cd /etc/namedb
 # mkdir -p bin dev etc var/tmp var/run master slave
 # chown bind:bind slave var/*1

       1 named solamente necesita escribir en estos directorios asi que eso   
         es todo lo que debemos crear.                                        

     * Reorganizar y crear los archivos de configuracion de zona basicos:

 # cp /etc/localtime etc1
 # mv named.conf etc && ln -sf etc/named.conf
 # mv named.root master

 # sh make-localhost && mv localhost.rev localhost-v6.rev master
 # cat > master/named.localhost
 $ORIGIN localhost.
 $TTL 6h
 @       IN      SOA     localhost. postmaster.localhost. (
                         1       ; serial
                         3600    ; refresh
                         1800    ; retry
                         604800  ; expiration
                         3600 )  ; minimum
         IN      NS      localhost.
         IN      A               127.0.0.1
 ^D

       1 Esto permite que named pueda escribir al archivo de log la hora      
         correcta a traves del syslogd(8)                                     

     * Si esta usando una version de FreeBSD anterior a 4.9-RELEASE se debe
       construir una copia estaticamente enlazada de named-xfer y copiarla
       dentro del directorio del "sandbox":

 # cd /usr/src/lib/libisc
 # make cleandir && make cleandir && make depend && make all
 # cd /usr/src/lib/libbind
 # make cleandir && make cleandir && make depend && make all
 # cd /usr/src/libexec/named-xfer
 # make cleandir && make cleandir && make depend && make NOSHARED=yes all
 # cp named-xfer /etc/namedb/bin && chmod 555 /etc/namedb/bin/named-xfer1

       Despuees de instalar la version estatica de named-xfer se deben
       realizar algunas tareas de limpieza para evitar dejar copias de
       bibliotecas o de programas en nuestros ficheros de fuentes:

 # cd /usr/src/lib/libisc
 # make cleandir
 # cd /usr/src/lib/libbind
 # make cleandir
 # cd /usr/src/libexec/named-xfer
 # make cleandir

       1 En algunas ocasiones este paso puede fallar. Si es su caso ejecute   
         lo siguiente:                                                        
                                                                              
         # cd /usr/src && make cleandir && make cleandir                      
                                                                              
         y borre su directorio /usr/obj:                                      
                                                                              
         # rm -fr /usr/obj && mkdir /usr/obj                                  
                                                                              
         Esto limpia cualquier "impureza" del arbol de fuentes y si se        
         repiten los pasos anteriores todo deberia funcionar.                 

       Si se esta usando FreeBSD version 4.9-RELEASE o posterior el
       ejecutable de named-xfer del directorio /usr/libexec ya se encuentra
       enlazado estaticamente y se puede utilizar cp(1) para copiarlo
       directamente en nuestro "sandbox".

     * Cree el fichero dev/null de tal forma que named pueda verlo y pueda
       escribir sobre el:

 # cd /etc/namedb/dev && mknod null c 2 2
 # chmod 666 null

     * Enlace simbolicamente /var/run/ndc con /etc/namedb/var/run/ndc:

 # ln -sf /etc/namedb/var/run/ndc /var/run/ndc

  Nota:

       Esto simplemente evita el tener que especificar la opcion -c de ndc(8)
       cada vez que se ejecute. Dado que los contenidos de /var/run se borran
       al inicio del sistema, si se piensa que esto puede resultar util, se
       puede anadir esta orden al " crontab" del usuario root utilizando la
       opcion @reboot. Consulte crontab(5) para saber mas informacion sobre
       esto.

     * Configure syslogd(8) para que cree un "socket" de log adicional de tal
       forma que named pueda escribir sobre el. Anada -l /etc/namedb/dev/log
       a la variable syslogd_flags dentro del fichero /etc/rc.conf.

     * Reorganice la ejecucion de las aplicaciones named y chroot para que se
       ejecuten dentro del "sandbox" anadiendo lo siguiente al
       fichero/etc/rc.conf:

 named_enable="YES"
 named_flags="-u bind -g bind -t /etc/namedb /etc/named.conf"

  Nota:

       Recuerde que el fichero de configuracion /etc/named.conf tiene una
       ruta completa que comienza en el directorio del "sandbox"; por
       ejemplo, en la linea superior el fichero que aparece es en realidad
       /etc/namedb/etc/named.conf.

   El siguiente paso consiste en editar el fichero /etc/namedb/etc/named.conf
   de tal forma que named pueda conocer que zonas cargar y donde encontrarlas
   en disco. A continuacion se muestra un ejemplo comentado (cualquier cosa
   que no se comenta en el ejemplo es porque resulta igual que la
   configuracion del servidor de DNS del caso normal):

 options {
         directory "/";1
         named-xfer "/bin/named-xfer";2
         version "";             // No muestra la versiAn de BIND
         query-source address * port 53;
 };
 // ndc control socket
 controls {
         unix "/var/run/ndc" perm 0600 owner 0 group 0;
 };
 // A partir de aquAvan las zonas:
 zone "localhost" IN {
         type master;
         file "master/named.localhost";3
         allow-transfer { localhost; };
         notify no;
 };
 zone "0.0.127.in-addr.arpa" IN {
         type master;
         file "master/localhost.rev";
         allow-transfer { localhost; };
         notify no;
 };
 zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int" {
         type master;
         file "master/localhost-v6.rev";
         allow-transfer { localhost; };
         notify no;
 };
 zone "." IN {
         type hint;
         file "master/named.root";
 };
 zone "private.example.net" in {
         type master;
         file "master/private.example.net.db";
         allow-transfer { 192.168.10.0/24; };
 };
 zone "10.168.192.in-addr.arpa" in {
         type slave;
         masters { 192.168.10.2; };
         file "slave/192.168.10.db";4
 };

   1 La linea que contiene directory se especifica como /, ya que todos los   
     ficheros que named necesita se encuentran dentro de este directorio      
     (recuerde que esto es equivalente al fichero /etc/namedb de un usuario   
     "normal".                                                                
   2 Especifica la ruta completa para el binario named-xfer binary (desde el  
     marco de referencia de named). Esto resulta necesario ya que por defecto 
     named se compila de tal forma que trata de localizar named-xfer dentro   
     de /usr/libexec.                                                         
   3 Especifica el nombre del fichero (relativo a la linea (relativo a la     
     linea ) directory anterior) donde named puede encontrar el fichero de    
     zona para esta zona.                                                     
   4 Especifica el nombre del fichero (relativo a la liena directory          
     anterior) donde named deberia escribir una copia del archivo de zona     
     para esta zona despues de recuperarla exitosamente desde el servidor     
     maestro. Este es el motivo por el que en las etapas de configuracion     
     anteriores necesitabamos cambiar la propiedad del directorio slave al    
     grupo bind.                                                              

   Despues de completar los pasos anteriores reinicie el servidor o reinicie
   syslogd(8) y ejecute named(8) asegurandose de que se utilicen las nuevas
   opciones especificadas en syslogd_flags y named_flags. En estos momentos
   deberiamos estar ejecutando una copia de named dentro de un "sandbox".

  29.11.9. Seguridad

   Aunque BIND es la implementacion de DNS mas utilizada existe siempre el
   asunto relacionado con la seguridad. De vez en cuando se encuentran
   agujeros de seguridad y vulnerabilidades.

   Es una buena idea suscribirse a CERT y a freebsd-security-notifications
   para estar al dia de los problemas de seguridad relacionados con named.

  Sugerencia:

   Si surge un problema nunca esta de mas actualizar los fuentes y recompilar
   los ejecutables desde dichas fuentes.

  29.11.10. Lecturas recomendadas

   Las paginas del manual de BIND/named: ndc(8) named(8) named.conf(5)

     * Pagina oficial de ISC Bind

     * Preguntas mas frecuentes sobre BIND

     * Libro de O'Reilly "DNS and BIND", cuarta edicion

     * RFC1034 - Nombre de Dominio - Conceptos y Caracteristicas

     * RFC1035 - Nombres de Domninio - Implementacion y Especificacion

29.12. NTP

   Escrito por Tom Hukins.

  29.12.1. Resumen

   Segun pasa el tiempo el reloj de un computador esta expuesto a ligeros
   desplazamientos. NTP (Protocolo de Hora en Red, en ingles "Network Time
   Protocol") es un protocolo que permite asegurar la exactitud de nuestro
   reloj.

   Existen varios servicios de internet que confian y se pueden beneficiar de
   relojes de computadores precisos. Por ejemplo un servidor web puede
   recibir peticiones de un determinado fichero si ha sido modificado
   posteriormente a una determinada fecha u hora. Servicios como cron(8)
   ejecutan ordenes en determinados instantes. Si el reloj no se encuentra
   ajustado estas ordenes pueden ejecutarse fuera de la hora prevista.

   FreeBSD viene con el servidor NTP ntpd(8) que se puede utilizar para
   preguntar a otros servidores NTP, de tal forma que podemos ajustar nuestro
   reloj segun la hora de otros servidores e incluso proporcionar servicio de
   hora nosotros mismos.

  29.12.2. Eleccion de los servidores de hora adecuados

   Para sincronizar nuestro reloj necesitamos comunicarnos con uno o mas
   servidores NTP. El administrador de nuestra red o nuestro proveedor de
   servicios de Internet muy posiblemente hayan configurado algun servidor
   NTP para estos propositos. Consulte la documentacion de que disponga.
   Existe una lista de servidores NTP publicamente accesibles que se pueden
   utilizar para buscar un servidor NTP que se encuentre geograficamente
   proximo. Asegurese de que conoce la politica de uso de estos servidores
   publicos ya que en algunos casos es necesario pedir permiso al
   administrador antes de de poder utilizarlos, principalmente por motivos
   estadisticos.

   Le recomendamos seleccionar servidores NTP que no se encuentren conectados
   entre si por si alguno de los servidores que use sea inaccesible o su
   reloj se averie. ntpd(8) utiliza las respuestas que recibe de otros
   servidores de una forma inteligente. servidores de una forma inteligente
   (Tiene a hacer mas caso a los mas fiables.

  29.12.3. Configuracion de la maquina

    29.12.3.1. Configuracion basica

   Si solamente deseamos sincronizar nuestro reloj cuando se arranca la
   maquina se puede utilizar ntpdate(8). Esto puede ser adecuado en algunas
   maquinas de escritorio que se reinician frecuentemente y donde la
   sincronizacion no suele ser un objetivo prioritario pero normalmente la
   mayoria de las maquinas deberian ejecutar ntpd(8).

   La utilizacion de ntpdate(8) en tiempo de arranque es tambien una buena
   idea incluso para las maquinas que ejecutan ntpd(8). El programa ntpd(8)
   modifica el reloj de forma gradual, mientras que ntpdate(8) ajusta
   directamente el reloj sin importar que tamano tenga la diferencia de
   tiempo existente entre la maquina y el servidor de tiempo de referencia.

   Para activar ntpdate(8) en tiempo de arranque, anada ntpdate_enable="YES"
   al fichero /etc/rc.conf. Tambien es necesario especificar todos los
   servidores que deseamos utilizar para realizar el proceso de
   sincronizacion y cualquier parametro que deseemos pasar a ntpdate(8)
   utilizando la variable ntpdate_flags.

    29.12.3.2. Configuracion general

   NTP se configura mediante el archivo /etc/ntp.conf utilizando el formato
   descrito en ntp.conf(5). A continuacion se muestra un sencillo ejemplo:

 server ntplocal.ejemplo.com prefer
 server timeserver.ejemplo.org
 server ntp2a.ejemplo.net

 driftfile /var/db/ntp.drift

   La opcion server especifica que servidores se van a utilizar,
   especificando un servidor por linea. Si se especifica un servidor con el
   argumento prefer, como en ntplocal.ejemplo.com dicho servidor se prefiere
   sobre los demas. No obstante la respuesta de su servidor preferido se
   descartara si difiere sustancialmente de la respuesta recibida por parte
   del resto de los servidores especificados; en caso contrario solo se
   tendra en cuenta la respuesta del servidor preferido sin importar la
   informacion suministrada por el resto. El argumento prefer se utiliza
   normalmente en servidores NTP altamente precisos, como aquellos que poseen
   hardware de tiempo especifico.

   La opcion driftfile especifica que fichero se utiliza para almacenar el
   desplazamiento de la fracuencia de reloj de la maquina. El programa
   ntpd(8) utiliza este valor para automaticamente compensar el desvio que
   experimenta de forma natural el reloj de la maquina, permitiendo mantener
   una precision acotada incluso cuando se pierde la comunicacion con el
   resto de referencias externas.

   La opcion driftfile especifica que fichero se utiliza para almacenar la
   informacion sobre espuestas anteriores de servidores NTP. Este fichero
   contiene informacion util para la implementacion de NTP. No deberia ser
   modificada por ningun otro proceso.

    29.12.3.3. Control de acceso al servidor NTP

   Por defecto nuestro servidor de NTP puede ser accedido por cualquier
   maquina de Internet. La opcion restrict se puede utilizar para controlar
   controlar que maquinas pueden acceder al servicio.

   Si queremos denegar el acceso a todas las maquinas existentes basta con
   anadir la siguiente linea a /etc/ntp.conf:

 restrict default ignore

   Si solo queremos permitir el acceso al servicio de hora a las maquinas de
   nuestra red y al menos tiempo nos queremos asegurar de que dichos clientes
   no pueden a su vez configurar la hora del servidor o utilizarse ellos
   mismos como nuevos servidores de hora basta con anadir lo siguiente en
   lugar de lo anterior:

 restrict 192.168.1.0 mask 255.255.255.0 notrust nomodify notrap

   donde 192.168.1.0 es la direccion IP de nuestra red y 255.255.255.0 es la
   mascara de red.

   /etc/ntp.conf puede contener varias opciones de tipo restrict. Para mas
   detalles consulte la seccion Soporte de Control de Acceso de ntp.conf(5).

  29.12.4. Ejecucion del servidor de NTP

   Para asegurarnos de que el servidor de NTP se ejecuta en tiempo de
   arranque se debe anadir la linea xntpd_enable="YES" al fichero
   /etc/rc.conf. Si deseamos pasar opciones adicionales a ntpd(8) se puede
   modificar la variable xntpd_flags del fichero /etc/rc.conf.

   Para ejecutar el servidor sin reiniciar la maquina ejecute ntpd junto con
   todos aquellos parametros que haya especificado en la variable de arranque
   xntpd_flags del fichero /etc/rc.conf. Por ejemplo:

 # ntpd -p /var/run/ntpd.pid

  Nota:

   Bajo FreeBSD 5.X se han renombrado algunas opciones del fichero
   /etc/rc.conf. Se debe reemplazar cualquier aparicion xntpd por por ntpd.

  29.12.5. Utilizacion de ntpd junto con una conexion temporal a Internet

   El programa ntpd(8) no necesita una conexion permanente a Internet para
   poder funcionar correctamente. No obstante si la conexion a Internet se
   encuentra configurada con marcacion bajo demanda es una buena idea impedir
   que el trafico de NTP lance una marcacion automatica o que mantenga la
   conexion viva. Si se utiliza el PPP de entorno de usuario se pueden
   utilizar las directivas filter dentro del fichero /etc/ppp/ppp.conf para
   evitar esto. Por ejemplo:

  set filter dial 0 deny udp src eq 123
  # Evita que el trA!fico NTP inice una llamada saliente
  set filter dial 1 permit 0 0
  set filter alive 0 deny udp src eq 123
  Evita que el trA!ficoNTP entrante mantenga abierta la conexiA^3n
  set filter alive 1 deny udp dst eq 123
  Evita que el trA!fico NTP saliente mantenga abierta la conexiA^3n
  set filter alive 2 permit 0/0 0/0

   Para as detalles consulte la seccion PACKET FILTERING de ppp(8) y los
   ejemplos que se encuentran en /usr/share/examples/ppp/.

  Nota:

   Algunos proveedores de acceso a Internet bloquean paquetes que utilizan
   numeros de puertos bajos impidiendo que los paquetes de vuelta alcancen
   nuestra maquina.

  29.12.6. Informacion adicional

   Hay documentacion sobre el servidor NTP en formato HTML en
   /usr/share/doc/ntp/.

29.13. Traduccion de direcciones de red

   Escrito por Chern Lee.

  29.13.1. Overview

   El daemon de FreeBSD que se encarga de traducir direcciones de red, mas
   conocido como natd(8), es un daemon que acepta paquetes IP, modifica la
   direccion IP fuente de dichos paquetes y los reinyecta en el flujo de
   paquetes IP de salida. natd(8) ejecuta este proceso modificando la
   direccion de origen y el puerto de tal forma que cuando se reciben
   paquetes de contestacion natd(8) es capaz de determinar el destino real y
   reenviar el paquete a dicho destino.

   El uso mas comun de NAT es para Compartir la Conexion a Internet.

  29.13.2. Configuracion

   Debido al pequeno espacio de direccionamiento que se encuentra actualmente
   disponible en IPv4 y debido tambien al gran aumento que se esta
   produciendo en cuanto a numero de usuarios de lineas de conexion a
   Internet de alta velocidad como cable o DSL la gente necesita utilizar
   cada vez mas la salida de Comparticion de Conexion a Internet. La
   caracteristica de poder conectar varios computadores a traves de una unica
   conexion y una unica direccion IP hacen de natd(8) una eleccion razonable.

   Cada vez con mas frecuencia un usuario tipico dispone de una maquina
   conectada mediante cable o DSL pero desearia utilizar dicha maquina como
   un " router" de acceso para el resto de los ordenadores de su red de area
   local.

   Para poder hacerlo la maquina (FreeBSD por supuesto) debe configurarse
   para actuar como pasarela. Debe tener al menos dos tarjetas de red, una
   para conectarse a la red de area local y la otra para conectarse con el
   "router" de acceso a Internet. Todas las maquinas de la LAN se conectan
   entre si mediante un "hub" o un " switch".

   Topologia de la Red

   Una configuracion como esta se utiliza frecuentemente para compartir el
   acceso a Internet. Una de las maquinas de la LAN esta realmente conectada
   a Internet. El resto de las maquinas acceden a Internet utilizando como
   "pasarela" la maquina inicial.

  29.13.3. Configuracion

   Se deben anadir las siguientes opciones al fichero de configuracion del
   nucleo:

 options IPFIREWALL
 options IPDIVERT

   Ademas, segun se prefiera, se pueden anadir tambien las siguientes:

 options IPFIREWALL_DEFAULT_TO_ACCEPT
 options IPFIREWALL_VERBOSE

   Lo que viene a continuacion se tiene que definir en /etc/rc.conf:

 gateway_enable="YES"
 firewall_enable="YES"
 firewall_type="OPEN"
 natd_enable="YES"
 natd_interface="fxp0"
 natd_flags=""

                         Configura la maquina para que actue como "router" o  
   gateway_enable="YES"  pasarela de red. Se puede conseguir lo mismo         
                         ejecutando sysctl net.inet.ip.forwarding=1.          
                         Activa las reglas de cortafuegos que se encuentran   
   firewall_enable="YES" definidas por defecto en /etc/rc.firewall y que      
                         entran en funcionamiento en el arranque del sistema. 
                         Especifica un conjunto de reglas de cortafuegos que  
                         permite el acceso a todos los paquetes que se        
   firewall_type="OPEN"  reciban. Consulte /etc/rc.firewall para obtener      
                         informacion sobre el resto de tipos de reglas que se 
                         pueden configurar.                                   
   natd_interface="fxp0" Indica que interfaz se utiliza para reenviar         
                         paquetes (la interfaz que se conecta a Internet).    
   natd_flags=""         Define cualesquiera otras opciones que se deseen     
                         proporcionar a natd(8) en tiempo de arranque.        

   Si se definen las opciones anteriores, en el arranque del sistema el
   fichero /etc/rc.conf configurara las variables de tal forma que se
   ejecutaria natd -interface fxp0. Evidentemente esta orden tambien se puede
   ejecutar de forma manual.

  Nota:

   Tambien es posible utilizar un fichero de configuracion para natd(8) en
   caso de que deseemos especificar muchos parametros de arranque. Tendremos
   que declarar la ubicacion del fichero de configuracion mediante la
   inclusion de lo siguiente en /etc/rc.conf:

 natd_flags="-f /etc/natd.conf"

   El fichero /etc/natd.conf debe contener una lista de opciones de
   configuracion una opcion por linea. Por ejemplo, en el caso que se comenta
   en la siguiente seccion se utilizaria un fichero de configuracion con la
   siguiente informacion:

 redirect_port tcp 192.168.0.2:6667 6667
 redirect_port tcp 192.168.0.3:80 80

   Para obtener mas informacion sobre el fichero de configuracion se puede
   consultar la opcion -f que se describe en la pagina del manual de natd(8).

   Cada maquina (y cada interfaz) que se encuentra conectada a la LAN debe
   poseer una direccion IP perteneciente al espacio de direcciones IP privado
   tal y como se define en RFC 1918 y debe poseer como pasarela por defecto
   la direccion IP de la interfaz interna (la interfaz que se conecta a la
   LAN) de la maquina que ejecuta natd.

   Por ejemplo los clientes A y B se encuentran en la LAN utilizando las
   direcciones IP A192.168.0.2 y 192.168.0.3, respectivamente. La maquina que
   ejecuta natd posee la direccion IP 192.168.0.1 en la interfaz que se
   conecta a la LAN. El "router" por defecto tanto de A omo de B se establece
   al valor 192.168.0.1. La interfaz externa de la maquina que ejecuta natd,
   la interfaz que se conecta con Internet, no necesita de ninguna especial
   en relacion con el tema que estamos tratando en esta seccion.

  29.13.4. Redireccion de puertos

   El incoveniente que se presenta con la utilizacion de natd(8) es que los
   clientes de la LAN no son accesibles desde Internet. Dichos clientes
   pueden establecer conexiones con el exterior pero no pueden recibir
   intentos de conexion desde pueden recibir intentos de conexion desde
   Internet. Esto supone un gran problema cuando se quieren ejecutar
   servicios de acceso global en una o varias maquinas de la red LAN. Una
   forma sencilla de solucionar parcialmente este problemma consiste en
   redirigir determinados puertos en el servidor natd hacia determinadas
   maquinas de la LAN.

   Supongamos por ejemplo que en A se ejecuta un servidor de IRC y que en B
   se ejecuta un servidor web. Para que funcione lo que hemos comentado
   anteriormente se tienen que redirigir las conexiones recibidas en los
   puertos 6667 (IRC) y 80 (web) a dichas maquinas, respectivamente.

   Se debe pasar la opcion -redirect_port a natd(8) con los valores
   apropiados. La sintaxis es como sigue:

   -redirect_port proto IPdestino:PUERTOdestino[-PUERTOdestino]
                  [aliasIP:]aliasPUERTO[-aliasPUERTO]
                  [IPremota[:PUERTOremoto[-PUERTOremoto]]]

   Continuando con el ejemplo anterior los valores serian:

     -redirect_port tcp 192.168.0.2:6667 6667
     -redirect_port tcp 192.168.0.3:80 80

   Esto redirigira los puertos tcp adecuados a las maquinas situadas en la
   LAN.

   La opcion -redirect_port se puede utilizar para indicar rangos de puertos
   en vez de puertos individuales. Por ejemplo, tcp 192.168.0.2:2000-3000
   2000-3000 redirige todas las conexiones recibidas desde los puertos 2000
   al 3000 a los puertos puertos 2000 a 3000 de la maquina A.

   Estas opciones se pueden utilizar cuando se ejecute directamente natd(8)
   se pueden situar en la variable natd_flags="" en /etc/rc.conf y tambien se
   pueden pasar mediante un archivo de configuracion.

   Para obtener mas informacion sobre opciones de configuracion por favor
   consulte natd(8)

  29.13.5. Redireccion de direcciones

   La redireccion de direcciones es una caracteristica util si se dispone de
   varias direcciones IP pero todas ellas se ubican en una unica maquina.
   Gracias a esto natd(8) puede asignar a cada cliente de la red LAN su
   propia direccion IP externa. natd(8) reescribe los paquetes que salen de
   la red LAN con la direccion IP externa adecuada y redirige todo el trafico
   recibido de vuelta al cliente en funcion de la direccion IP de destino:
   esto se conoce como NAT estatico. Por ejemplo las direcciones IP
   128.1.1.1, 128.1.1.2 y 128.1.1.3 pertenecen al " router" natd. 128.1.1.1
   se puede utilizar como la direccion IP externa del natd, mientras que
   128.1.1.2 y 128.1.1.3 se redirigen a los clientes A y B, respectivamente.

   La sintaxis de la opcion -redirect_address es la siguiente:

 -redirect_address IPlocal IPpublica

   IPlocal   La direccion IP interna del cliente de la LAN.                   
   IPpublica La direccion IP externa que se corresponde con un determinado    
             cliente de la LAN.                                               

   En nuestro ejemplo esta opcion se especificaria de la siguiente forma:

 -redirect_address 192.168.0.2 128.1.1.2
 -redirect_address 192.168.0.3 128.1.1.3

   De forma semejante a la opcion -redirect_port estos argumentos se pueden
   especificar directamente sobre la variable natd_flags="" del fichero
   /etc/rc.conf o tambien se pueden pasar via archivo de configuracion de
   natd. Si se utiliza redireccion de direcciones ya no es necesario utilizar
   redireccion de puertos ya que todos los paquetes que se reciben en una
   determinada direccion IP son redirigidos a la maquina especificada.

   Las direcciones IP externas de la maquina que ejecuta natd se deben
   activar y deben formar parte de un alias configurado sobre la interfaz
   externa que se conecta a Internet. Consulte rc.conf(5) para aprender a
   hacerlo.

29.14. El "Superservidor" inetd

   Escrito por Chern Lee.

  29.14.1. Resumen

   inetd(8) se conoce como el "Super Servidor de Internet" debido a que
   gestiona las conexiones de varios daemones. Los daemones son programas que
   proporcionan servicios de red. inetd actua como un servidor de servidor de
   gestion de otros daemones. Cuando inetd(8) recibe una conexion se
   determina que daemon deberia responder a dicha conexion, se lanza un
   proceso que ejecuta dicho daemon y se le entrega el " socket". La
   ejecucion de una unica instancia de inetd reduce la carga del sistema en
   comparacion con lo que significaria ejecutar cada uno de los daemones que
   gestiona de forma individual.

   inetd se utiliza principalmente para lanzar procesos que albergan a otros
   daemones pero inetd tambien se utiliza para gestionar determinados
   protocolos triviales como chargen, auth y daytime.

   Esta seccion trata la configuracion basica de inetd a traves de sus
   opciones de linea de ordenes y utilizando su fichero de configuracion,
   denominado /etc/inetd.conf.

  29.14.2. Configuraciones

   inetd se inicializa a traves del fichero /etc/rc.conf en tiempo de
   arranque. La opcion inetd_enable posee el valor NO por defecto, pero a
   menudo la aplicacion sysinstall la activa cuando se utiliza la
   configuracion de perfil de seguridad medio. Estableciendo

 inetd_enable="YES"

   o

 inetd_enable="NO"

   dentro de /etc/rc.conf se puede activar o desactivar la la ejecucion de
   inetd en el arranque del sistema.

   Se pueden ademas aplicar distintas opciones de linea de ordenes mediante
   la opcion inetd_flags.

  29.14.3. Opciones de linea de ordenes

   sinopsis de inetd:

   inetd [-d] [-l] [-w] [-W] [-c maximo] [-C tasa] [-a direccion |
   nombre_de_host] [-p nombre_de_fichero] [-R tasa] [fichero de configuracion
   ]

   -d

           Activa la depuracion.

   -l

           Activa el "logging" de las conexiones efectuadas con ecute.

   -w

           Activa el recubrimiento de TCP para servicios externos (activado
           por defecto).

   -W

           Activa el recubrimiento de TCP para los servicios internos,
           ejecutados directamente por el daemon inetd (activado por
           defecto).

   -c maximo

           Especifica el maximo numero de invocaciones simultaneas de cada
           servicio; el valor por defecto es ilimitado. Se puede
           sobreescribir para cada servicio utilizando la opcion max-child.

   -C tasa

           Especifica el maximo numero de veces que se puede llamar a un
           servicio desde un direccion IP determinada por minuto; el valor
           por defecto es ilimitado. Se puede redefinir para cada servicio
           utilizando la opcion max-connections-per-ip-per-minute.

   -R tasa

           Especifica el maximo numero de veces que se puede invocar un
           servicio en un minuto; el valor por defecto es 256. Un valor de 0
           permite un numero ilimitado de llamadas.

   -a

           Especifica una direccion IP a la cual se asocia y sobre la cual se
           queda esperando recibir conexiones. Puede declararse tambien un
           nombre de maquina, en cuyo caso se utilizara la direccion (o
           direcciones si hay mas de una) IPv4 o IPv6 que esten tras dicho
           nombre. Normalmente se usa un nombre de maquina cuando inetd se
           ejecuta dentro de un jail(8), en cuyo caso el nombre de maquina se
           corresponde con el entorno jail(8).

           Cuando se desea asociarse tanto a direcciones IPv4 como a
           direcciones IPv6 y se utiliza un nombre de maquina se necesita una
           entrada para cada protocolo (IPv4 o IPv6) para cada servicio que
           se active a traves de /etc/inetd.conf. Por ejemplo un servicio
           basado en TCP necesitaria dos entradas, una utilizando tcp4 para
           el protocolo IPv4 y otra con tcp6 para las conexiones a traves del
           procolo de red IPv6.

   -p

           Especifica un fichero alternativo en el cual se guarda el ID del
           proceso.

   Estas opciones se pueden declarar dentro de las variables inetd_flags del
   fichero /etc/rc.conf. Por defecto inetd_flags tiene el valor -wW, lo que
   activa el recubrimiento de TCP para los servicios internos y externos de
   inetd. Los usuarios inexpertos no suelen introducir estos parametros y por
   ello ni siquiera necesitan especificarse dentro de /etc/rc.conf.

  Nota:

   Un servicio externo es un daemon que se ejecuta fuera de inetd y que se
   lanza cuando se recibe un intento de conexion. Un servicio interno es un
   servicio que inetd puede servir directamente sin necesidad de lanzar
   nuevos procesos.

  29.14.4. inetd.conf

   La configuracion de inetd se realiza a traves del ficherode configuracion
   /etc/inetd.conf.

   Cuando se realiza una modificacion en el fichero /etc/inetd.conf se debe
   obligar a inetd a releer dicho fichero de configuracion, lo cual se
   realiza enviando una senal "HANGUP" al proceso inetd como se muestra a
   continuacion:

   Ejemplo 29.4. Envio de una senal HANGUP a inetd

 # kill -HUP `cat /var/run/inetd.pid`

   Cada linea del fichero de configuracion especifica un daemon individual.
   Los comentarios se preceden por el caracter "#". El formato del fichero de
   configuracion /etc/inetd.conf es el siguiente:

 service-name
 socket-type
 protocol
 {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]
 user[:group][/login-class]
 server-program
 server-program-arguments

   A continuacion se muestra una entrada de ejemplo para el daemon ftpd para
   IPv4:

 ftp     stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l

   service-name

           Este es el nombre del servicio que proporciona un determinado
           daemon. Se debe corresponder con el nombre del nombre de servicio
           que se declara en el fichero /etc/services. Este fichero determina
           sobre que puerto debe ponerse a escuchar inetd. Si se crea un
           nuevo servicio se debe especificar primero en /etc/services.

   socket-type

           Puede ser stream, dgram, raw o seqpacket. stream se debe utilizar
           obligatoriamente para daemones orientados a conexion (daemones
           TCP) mientras que dgram se utiliza en daemones basados en el
           protocolo de transporte UDP.

   protocol

           Uno de los siguientes:

           +---------------------------------------------+
           | Protocolo |           Explicacion           |
           |-----------+---------------------------------|
           | tcp, tcp4 | TCP IPv4                        |
           |-----------+---------------------------------|
           | udp, udp4 | UDP IPv4                        |
           |-----------+---------------------------------|
           | tcp6      | TCP IPv6                        |
           |-----------+---------------------------------|
           | udp6      | UDP IPv6                        |
           |-----------+---------------------------------|
           | tcp46     | TCP IPv4 e IPv6 al mismo tiempo |
           |-----------+---------------------------------|
           | udp46     | UDP IPv4 e IPv6 al mismo tiempo |
           +---------------------------------------------+

   {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]

           wait|nowait indica si el daemon puede gestionar su propio "socket"
           o no. Los " sockets" de tipo dgram deben utilizar obigatoriamente
           la opcion wait mientras que los daemones basados en "sockets" de
           tipo "stream", los cuales se implementan normalmente mediante
           hilos, deberia utilizar la opcion nowait. La opcion wait
           normalmente entrega varios " sockets" a un unico daemon, mientras
           que la opcion nowait lanza un daemon "hijo" por cada nuevo "
           socket".

           El numero maximo de daemones " hijo" que puede lanzar inetd se
           puede especificar mediante la opcion max-child. Si se necesita por
           ejemplo un limite de diez instancias para un daemon en particular
           se puede especificar el valor 10 justo despues de la opcion
           nowait.

           Ademas de max-child se puede activar otra opcion para limitar en
           numero maximo de conexiones que se aceptan desde un determinado
           lugar mediante la opcion max-connections-per-ip-per-minute. Esta
           opcion hace justo lo que su nombre indica. Un valor de, por
           ejemplo, diez en esta opcion limitaria cualquier maquina remota a
           un maximo de diez intentos de conexion por minuto. Esto resulta
           util para prevenir un consumo incontrolado de recursos y ataques
           de Denegacion de Servicio ("Denial of Service" o DoS) sobre
           nuestra maquina.

           Cuando se especifica este campo las opciones wait o nowait son
           obligatorias max-child y max-connections-per-ip-per-minute son
           opcionales.

           Un daemon de tipo "stream" sin la opcion max-child y sin la opcion
           max-connections-per-ip-per-minute simplemente especificaria la
           opcion nowait.

           El mismo daemon con el limite maximo de diez daemones "hijos"
           seria: nowait/10.

           La misma configuracion con un limite de veinte conexiones por
           direccion IP por minuto y un maximo total de diez daemones "hijos"
           seria: nowait/10/20.

           Todas estas opciones son utilizadas por el daemon fingerd que se
           muestra a continuacion a modo de ejemplo:

 finger stream  tcp     nowait/3/10 nobody /usr/libexec/fingerd fingerd -s

   user

           Este es el nombre de usuario con el que deberia ejecutarse un
           determinado daemon. Normalmente los daemones se suelen ejectar con
           permisos de root. Por motivos de seguridad, resulta bastante comun
           encontrarse con algunos servidores que se ejecutan bajo el usuario
           daemon o incluso por el usuario menos privilegiado de todos que es
           el usuario nobody.

   server-program

           La ruta completa de la localizacion del daemon que se quiere
           ejecutar cuando se recibe un intento de conexion. Si el daemon es
           un servicio proporcionado por el propio inetd se debe utilizar la
           opcion internal en su lugar.

   server-program-arguments

           Esto funciona en conjuncion con server-program, ya que especifica
           los argumentos, comenzando por argv[0], que se pasan al daemon
           cuando se le invoca. Si la linea de ordenes es mydaemon -d,
           midaemon -d deberia ser el valor de la opcion
           server-program-arguments. Si el daemon es un servicio interno se
           debe utilizar la utilizar la opcion internal en lugar de la que
           estamos comentando.

  29.14.5. Seguridad

   Dependiendo del perfil de seguridad establecido cuando se instalo el
   sistema FreeBSD varios daemones de inetd pueden estar desactivados o
   activados. Si no se necesita un daemon determinado, no lo active.
   Especifique un "#" al comienzo de la linea del daemon que quiere
   desactivar y envie una senal hangup a inetd. No se aconseja ejecutar
   algunos daemones determinados (un caso tipico es fingerd) porque pueden
   proporcionar informacion valiosa para un atacante.

   Algunos daemones no presentan ninguna caracteristica de seguridad y poseen
   grandes o incluso no poseen tiempos de expiracion para los intentos de
   conexion. Esto permite que un atacante sature los recursos de nuestra
   maquina realizando intentos de conexion a una tasa relativamente baja
   contra uno de estos ingenuos daemones. Pueder ser una buena idea
   protegerse de esto utilizando las opciones
   max-connections-per-ip-per-minute y max-child para este tipo de daemones.

   El recubrimiento de TCP esta activado por defecto tal y como ya se ha
   comentado anteriormente. Consulte la pagina del manual de hosts_access(5)
   para obtener mas informacion sobre como aplicar restricciones relacionadas
   con TCP a los daemones invocados por inetd.

  29.14.6. Varios

   daytime, time, echo, discard, chargen y auth son servicios que inetd
   proporciona de forma interna y propia.

   El servicio auth proporciona servicios de identificacion a traves de la
   red (ident, identd) y se puede configurar hasta en cierto grado.

   Consulte la pagina del manual de inetd(8) si quiere conocer todos los
   detalles.

29.15. Linea IP paralela (PLIP)

   PLIP nos permite configurar TCP/IP a traves del puerto paralelo. Es util
   para conectar maquinas que no poseen tarjetas de red, o para instalar
   FreeBSD en ciertos viejos modelos de portatiles. En esta seccion se
   explica lo siguiente:

     * Construccion de un cable paralelo (laplink).

     * Conexion de dos computadores utilizando PLIP.

  29.15.1. Construccion de un cable paralelo

   Se puede comprar un cable paralelo en cualquier tienda de componentes
   informaticos. No obstante si no es posible comprarlo o simplemente
   queremos saber como hacerlo nosotros mismos, en la siguiente tabla
   mostramos como hacer un cable de impresora paralelo.

   Tabla 29.1. Cableado de una conexion de cable paralelo para redes

   +------------------------------------------------------+
   | Nombre-A | Extremo-A | Extremo-B | Descr. | Post/Bit |
   |----------+-----------+-----------+--------+----------|
   | DATA0    | 2         | 15        | Data   | 0/0x01   |
   | -ERROR   | 15        | 2         |        | 1/0x08   |
   |----------+-----------+-----------+--------+----------|
   | DATA1    | 3         | 13        | Data   | 0/0x02   |
   | +SLCT    | 13        | 3         |        | 1/0x10   |
   |----------+-----------+-----------+--------+----------|
   | DATA2    | 4         | 12        | Data   | 0/0x04   |
   | +PE      | 12        | 4         |        | 1/0x20   |
   |----------+-----------+-----------+--------+----------|
   | DATA3    | 5         | 10        | Strobe | 0/0x08   |
   | -ACK     | 10        | 5         |        | 1/0x40   |
   |----------+-----------+-----------+--------+----------|
   | DATA4    | 6         | 11        | Data   | 0/0x10   |
   | BUSY     | 11        | 6         |        | 1/0x80   |
   |----------+-----------+-----------+--------+----------|
   | GND      | 18-25     | 18-25     | GND    | -        |
   +------------------------------------------------------+

  29.15.2. Configuracion de PLIP

   En primer lugar debemos tener en nuesras manos un cable " laplink". A
   continuacion se debe comprobar que ambos sistemas poseen nucleos con
   soporte para el controlador lpt(4):

 # grep lp /var/run/dmesg.boot
 lpt0: <Printer> on ppbus0
 lpt0: Interrupt-driven port

   El puerto paralelo debe ser un puerto controlado por alguna " irq". En
   FreeBSD 4.X se deberia tener un linea como la siguiente en el fichero de
   configuracion del kernel:

 device ppc0 at isa? irq 7

   En FreeBSD 5.X el fichero /boot/device.hints debe contener las siguientes
   lineas:

 hint.ppc.0.at="isa"
 hint.ppc.0.irq="7"

   A continuacion se debe comprobar que el fichero de configuracion del
   nucleo posee una linea con device plip o tambien puede comprobar si se ha
   cargado el modulo del nucleo plip.ko. Tanto en un caso como en el otro,
   cuando se ejecute ifconfig(8) deberia aparecer el interfaz de red
   paralelo. En FreeBSD 4.X se muestra algo parecido a lo siguiente:

 # ifconfig lp0
 lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500

   y en FreeBSD 5.X:

 # ifconfig plip0
 plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500

  Nota:

   El nombre del dispositivo utilizado para la interfaz paralela es distinto
   en FreeBSD 4.X (lpX) y en FreeBSD 5.X (plipX).

   Enchufe el cable "laplink" en los interfaces de ambos computadores.

   Configure los parametros de la interfaz de red en ambas maquinas como
   root. Por ejemplo, si queremos conectar la maquina host1 ejecutando
   FreeBSD 4.X con la maquina host2 que ejecuta FreeBSD 5.X:

                  host1 <-----> host2
 Direccion IP 10.0.0.1      10.0.0.2

   Configure la interfaz de host1 asi:

 # ifconfig lp0 10.0.0.1 10.0.0.2

   Configure la interfaz de host2 por medio de:

 # ifconfig plip0 10.0.0.2 10.0.0.1

   Tras esto deberia disponerse de una conexion totalmente funcional. Por
   favor, consulte lp(4) y lpt(4) si quiere saber mas.

   Ademas se debe anadir ambas maquinas al fichero /etc/hosts:

 127.0.0.1               localhost.mi.dominio localhost
 10.0.0.1                host1.mi.dominio host1
 10.0.0.2                host2.mi.dominio

   Para comprobar que efectivamente la conexion funciona se puede probar a
   hacer un ping desde cada maquina. Por ejemplo en la maquina host1:

 # ifconfig lp0
 lp0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000
 # netstat -r
 Routing tables

 Internet:
 Destination        Gateway          Flags     Refs     Use      Netif Expire
 host2              host1              UH          0       0       lp0
 # ping -c 4 host2
 PING host2 (10.0.0.2): 56 data bytes
 64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms
 64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms
 64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms
 64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms

 --- host2 ping statistics ---
 4 packets transmitted, 4 packets received, 0% packet loss
 round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms

29.16. IPv6

   Texto original de Aaron Kaplan.
   Reestructurado y ampliado por Tom Rhodes.

   IPv6 (tambien conocido como IPng o "IP de nueva generacion") es la nueva
   version del conocido protocolo de red IP, tambien llamado IPv4. Como
   sucede con el resto de los sistemas *BSD FreeBSD proporciona una
   implementacion de referencia que desarrolla el proyecto japones KAME.
   FreeBSD dispone de todo lo necesario para experimentar con el nuevo
   protocolo de red. Esta seccion se centra en conseguir configurar y
   ejecutar correctamente el protocolo IPv6.

   Al comienzo de los anos 90 la gente comenzo a preocuparse por el rapido
   consumo del espacio de direcciones de IPv4. Dada la expansion actual de
   Internet existen dos preocupaciones principales:

     * Agotamiento de las direcciones disponibles. Actualmente no se trata
       del principal problema debido al uso generalizado del del espacio de
       direccionamiento privado (10.0.0.0/8, 192.168.0.0/24, etc.) junto con
       NAT.

     * El numero de entradas de las tablas de rutas comenzaba a ser imposible
       de manejar. Esto todavia es un problema prioritario.

   IPv6 trata de resolver estos problemas y algunos mas de la siguiente
   forma:

     * IPv6 posee un espacio de direccionamiento de 128 bits. En otras
       palabras, en teoria existen
       340,282,366,920,938,463,463,374,607,431,768,211,456 direcciones
       disponibles. Esto significa que existen aproximadamente 6.67 * 10^27
       direcciones IPv6 por metro cuadrado disponibles para todo el planeta
       Tierra.

     * Los "routers" solo almacenan direcciones de red agregadas asi que se
       reduce el numero de entradas para cada tabla de rutas a un promedio de
       8192.

   Existen ademas muchas otras caracterisiticas interesantes que IPv6
   proporciona, como:

     * Autoconfiguracion de direcciones (RFC2462)

     * Direcciones anycast ("una-de-varias")

     * Soporte de direcciones multicast predefinido

     * IPsec (Seguridad en IP)

     * Estructura de la cabecera simplificada

     * IP movil

     * Mecanismos de traduccion de IPv6 a IPv4 (y viceversa)

   Si quiere saber mas sobre IPv6 le recomendamos que consulte:

     * Resumen de IPv6 en playground.sun.com

     * KAME.net

     * 6bone.net

  29.16.1. Conceptos basicos sobre las direcciones IPv6

   Existen varios tipos distintos de direcciones IPv6: Unicast, Anycast y
   Multicast.

   Las direcciones unicast son direcciones bien conocidas. Un paquete que se
   envia a una direccion unicast deberin llega a la interfaz identificada por
   dicha direccion.

   Las direcciones anycast son sintacticamente indistinguibles de las
   direcciones unicast pero sirven para identificar a un conjunto de
   interfaces. Un paquete destinado a una direccion anycast llega a la
   interfaz "mas cercana" (en terminos de metrica de "routers"). Las
   direcciones anycast solo se pueden utilizar en "routers".

   Las direcciones multicast identifican un grupo de interfaces. Un paquete
   destinado a una direccion multicast llega a todos los los interfaces que
   se encuentran agrupados bajo dicha direccion.

  Nota:

   Las direcciones IPv4 de tipo broadcast (normalmente xxx.xxx.xxx.255) se
   expresan en IPv6 mediante direcciones multicast.

   Tabla 29.2. Direcciones IPv6 reservadas

   +------------------------------------------------------------------------+
   |                  |  Longitud   |               |                       |
   |  Direccion IPv6  | del Prefijo |  Descripcion  |         Notas         |
   |                  |   (Bits)    |               |                       |
   |------------------+-------------+---------------+-----------------------|
   | ::               | 128 bits    | sin           | como 0.0.0.0 en Pv4   |
   |                  |             | especificar   |                       |
   |------------------+-------------+---------------+-----------------------|
   |                  |             | direccion de  | como las 127.0.0.1 en |
   | ::1              | 128 bits    | bucle local   | IPv4                  |
   |                  |             | (loopback)    |                       |
   |------------------+-------------+---------------+-----------------------|
   |                  |             |               | Los 32 bits mas bajos |
   |                  |             | direcciones   | contienen una         |
   | ::00:xx:xx:xx:xx | 96 bits     | IPv6          | direccion IPv4.       |
   |                  |             | compatibles   | Tambien se denominan  |
   |                  |             | con IPv4      | direcciones           |
   |                  |             |               | "empotradas."         |
   |------------------+-------------+---------------+-----------------------|
   |                  |             |               | Los 32 bits mas bajos |
   |                  |             |               | contienen una         |
   |                  |             | direcciones   | direccion IPv4. Se    |
   | ::ff:xx:xx:xx:xx | 96 bits     | IPv6 mapeadas | usan para representar |
   |                  |             | a IPv4        | direcciones IPv4      |
   |                  |             |               | mediante direcciones  |
   |                  |             |               | IPv6.                 |
   |------------------+-------------+---------------+-----------------------|
   |                  |             | direcciones   | equivalentes a la     |
   | fe80:: - feb::   | 10 bits     | link-local    | direccion de loopback |
   |                  |             |               | de IPv4               |
   |------------------+-------------+---------------+-----------------------|
   |                  |             | direcciones   | Equivalentes al       |
   | fec0:: - fef::   | 10 bits     | site-local    | direccionamiento      |
   |                  |             |               | privado de IPv4       |
   |------------------+-------------+---------------+-----------------------|
   | ff::             | 8 bits      | multicast     |                       |
   |------------------+-------------+---------------+-----------------------|
   |                  |             |               | Todas las direcciones |
   |                  |             | direcciones   | IPv6 globales se      |
   | 001 (base 2)     | 3 bits      | unicast       | asignan a partir de   |
   |                  |             | globales      | este espacio. Los     |
   |                  |             |               | primeros tres bits    |
   |                  |             |               | siempre son "001".    |
   +------------------------------------------------------------------------+

  29.16.2. Lectura de las direcciones IPv6

   La forma canonica que se utiliza para representar direcciones IPv6 es:
   x:x:x:x:x:x:x:x, donde cada "x" se considera un valor hexadecimal de 16
   Bit. Por ejemplo FEBC:A574:382B:23C1:AA49:4592:4EFE:9982

   A menudo una direccion posee alguna subcadena de varios ceros consecutivos
   de forma que se puede abreviar dicha cadena (solo una vez, para evitar
   ambiguedades) mediante "::". Tambien se pueden omitir los ceros a la ceros
   a la izquierda dentro de un valor "x". Por ejemplo fe80::1 se corresponde
   con la forma canonica fe80:0000:0000:0000:0000:0000:0000:0001.

   Una tercera forma de escribir direciones IPv6 es utilizando la ya
   tradicional notacion decimal de IPv4 pero solamente para los 32 bits mas
   bajos de la direccion IPv6. Por ejemplo 2002::10.0.0.1 se corresponderia
   con la representation hexadecimal canonica
   2002:0000:0000:0000:0000:0000:0a00:0001 la cual es equivalente tambien a
   escribir 2002::a00:1.

   A estas alturas el lector deberia ser capaz de comprender lo siguiente:

 # ifconfig

 rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
          inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255
          inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1
          ether 00:00:21:03:08:e1
          media: Ethernet autoselect (100baseTX )
          status: active

   fe80::200:21ff:fe03:8e1%rl0 es una direccion link-local autoconfigurada.
   Se construye a partir de la direccion MAC de la tarjeta de red.

   Si quiere saber mas sobre la estructura de las direcciones IPv6 puede
   consultar RFC3513.

  29.16.3. Establecimiento de conectividad

   Actualmente existen cuatro formas distintas de conectarse con otras
   maquinas y redes IPv6:

     * Unirse a la red experimental denominada 6bone

     * Obtener una red IPv6 a traves de nuestro proveedor de acceso a
       Internet. Consulte a su proveedor de servicios para para mas
       informacion.

     * Encapsulacion de IPv6 sobre IPv4 (RFC3068)

     * Utilizacion del "port" net/freenet6 si se dispone de una de una
       conexion de marcacion por modem.

   Vamos a explicar como conectarse al 6bone ya que parece ser la forma mas
   utilizada en la actualidad.

   En primer lugar se recomienda consultar el sitio web de 6bone para saber
   cual es la conexion del 6bone (fisicamente) mas proxima. Se debe escribir
   a la persona responsable de ese nodo y con un poco de suerte dicha persona
   respondera con con un conjunto de instrucciones y pasos a seguir para
   establecer la la conexion con ellos y a traves de ellos con el resto de
   los nodos IPv6 que forman parte del 6bone. Normalmente esta conexion se
   establece usando tuneles GRE (gif).

   Veamos un ejemplo tipico de configuracion de un de un tunel gif(4):

 # ifconfig gif0 create
 # ifconfig gif0
 gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
 # ifconfig gif0 tunnel MI_DIRECCIOn_IPV4  SU_DIRECCIOn_IPV4
 # ifconfig gif0 inet6 alias DIRECCIOn_DE-SALIDA_IPv6_DEL_TUNEL_ASIGNADO

   Sustituya las palabras en mayusculas por la informacion recibida del nodo
   6bone al que nos queremos conectar.

   La orden anterior establece el tunel. Compruebe que el tunel funciona
   correctamente mediante ping(8). Haga un ping6(8) a ff02::1%gif0.
   Deberiamos recibir recibir "dos" respuestas.

  Nota:

   Para que el lector no se quede pensando en el significado significado de
   la direccion ff02:1%gif0 le podemos decir que se trata de de una direccion
   IPv6 multicast de tipo link-local. %gif0 no forma parte del protocolo IPv6
   como tal sino que se trata de un detalle de implementacion relacionado con
   las direcciones link-local y se anade para especificar la interfaz de
   salida que se debe utilizar para enviar los paquetes de ping6(8). Como
   estamos haciendo ping a una direccion multicast a la que se unen todos los
   interfaces pertenecientes al mismo enlace deberia responder al ping tanto
   nuestro propio interfaz como el interfaz remoto.

   A continuacion se configura la ruta por defecto hacia nuestro enlace
   6bone; observe que es muy semejante a lo que hay que hacer en IPv4:

 # route add -inet6 default -interface gif0
 # ping6 -n MI_UPLINK

 # traceroute6 www.jp.FreeBSD.org
 (3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max, 12 byte packets
      1  atnet-meta6  14.147 ms  15.499 ms  24.319 ms
      2  6bone-gw2-ATNET-NT.ipv6.tilab.com  103.408 ms  95.072 ms *
      3  3ffe:1831:0:ffff::4  138.645 ms  134.437 ms  144.257 ms
      4  3ffe:1810:0:6:290:27ff:fe79:7677  282.975 ms  278.666 ms  292.811 ms
      5  3ffe:1800:0:ff00::4  400.131 ms  396.324 ms  394.769 ms
      6  3ffe:1800:0:3:290:27ff:fe14:cdee  394.712 ms  397.19 ms  394.102 ms

   Esta captura de pantalla variara dependiendo de la localizacion de la
   maquina. Tras seguir estos pasos deberiamos poder alcanzar el sitio IPv6
   de www.kame.net y ver la tortuga bailarina, que es una imagen animada que
   solo se muestra cuando se accede al servidor web utilizando el protocolo
   IPv6 (para ellos se encesita utilizar un navegador web que soporte IPv6,
   IPv6, por ejemplo www/mozilla o Konqueror, que forma parte de
   x11/kdebase3, o tambien con www/epiphany.

  29.16.4. DNS en el mundo IPv6

   Existen dos tipos de registros de DNS para IPv6. No obstante el IETF ha
   declarado los registros A6 y CNAME como registros para uso experimental.
   Los registros de tipo AAAA son los unicos estandar a dia de hoy.

   La utilizacion de registros de tipo AAAA es muy sencilla. Se asocia el
   nombre de la maquina con la direccion IPv6 de la siguiente forma:

 NOMBREDEMIMAQUINA AAAA   MIDIRECCIONIPv6

   De igual forma que en IPv4 se utilizan los registros de tipo A. En caso de
   no poder administrar su propia zona de DNS se puede pedir esta
   configuracion a su proveedor de servicios. Las versiones actuales de bind
   (versiones 8.3 y 9) y el "port" dns/djbdns (con el parche de IPv6
   correspondiente) soportan los registros de tipo AAAA.

29.17. ATM en FreeBSD 5.X

   Escrito por Harti Brandt.

  29.17.1. Configuracion de IP clasico sobre ATM (PVCs)

   IP clasico sobre ATM (CLIP) es el metodo mas sencillo de utilizar ATM con
   IP. Se puede utilizar con conexiones conmutadas (SVC) y con conexiones
   permanentes (PVCs). En esta seccion se describe como configurar una red
   basada en PVCs.

    29.17.1.1. Configuraciones en red mallada completa

   El primer metodo para configurar CLIP con PVCs consiste en conectar unas
   maquinas con otras mediante circuitos PVC dedicados. Aunque la
   configuracion parece sencilla llega a resultar imposible de manejar cuando
   se posee un numero grande de maquinas. El ejemplo que se muestra a
   continuacion supone que nuestra red posee cuatro maquinas y que cada una
   se conecta a la red ATM mediante una tarjeta de red ATM. El primer paso
   consiste en planificar las direcciones IP y las conexiones ATM que se van
   a configurar en las maquinas.

   Maquina Direccion IP  
   hostA   192.168.173.1 
   hostB   192.168.173.2 
   hostC   192.168.173.3 
   hostD   192.168.173.4 

   Para construir una red completamente mallada necesitamos una conexion ATM
   entre cada par de maquinas:

     Maquinas    Pareja VPI.VCI 
   hostA - hostB 0.100          
   hostA - hostC 0.101          
   hostA - hostD 0.102          
   hostB - hostC 0.103          
   hostB - hostD 0.104          
   hostC - hostD 0.105          

   Los valores VPI y VCI en cada extremo de la conexion pueden ser diferentes
   pero por simplicidad suponemos que son iguales. A continuacion necesitamos
   configurar las interfaces ATM en cada maquina:

 hostA# ifconfig hatm0 192.168.173.1 up
 hostB# ifconfig hatm0 192.168.173.2 up
 hostC# ifconfig hatm0 192.168.173.3 up
 hostD# ifconfig hatm0 192.168.173.4 up

   Suponiendo que la interfaz ATM es hatm0 en todas las maquinas. Ahora
   necesitamos configurar los PVCs en las maquinas (suponemos que ya se han
   configurado de forma correcta en el "switch" ATM, para lo cual puede ser
   necesario consultar el manual del "switch").

 hostA# atmconfig natm add 192.168.173.2 hatm0 0 100 llc/snap ubr
 hostA# atmconfig natm add 192.168.173.3 hatm0 0 101 llc/snap ubr
 hostA# atmconfig natm add 192.168.173.4 hatm0 0 102 llc/snap ubr

 hostB# atmconfig natm add 192.168.173.1 hatm0 0 100 llc/snap ubr
 hostB# atmconfig natm add 192.168.173.3 hatm0 0 103 llc/snap ubr
 hostB# atmconfig natm add 192.168.173.4 hatm0 0 104 llc/snap ubr

 hostC# atmconfig natm add 192.168.173.1 hatm0 0 101 llc/snap ubr
 hostC# atmconfig natm add 192.168.173.2 hatm0 0 103 llc/snap ubr
 hostC# atmconfig natm add 192.168.173.4 hatm0 0 105 llc/snap ubr

 hostD# atmconfig natm add 192.168.173.1 hatm0 0 102 llc/snap ubr
 hostD# atmconfig natm add 192.168.173.2 hatm0 0 104 llc/snap ubr
 hostD# atmconfig natm add 192.168.173.3 hatm0 0 105 llc/snap ubr

   Por supuesto que se pueden utilizar otras especificaciones de trafico
   siempre y cuando las tarjetas de red las soporten. En este caso la
   especificacion del tipo de trafico se completa con los parametros del
   trafico. Puede acceder a la ayuda de atmconfig(8) asi:

 # atmconfig help natm add

   y por supuesto en la pagina de manual de atmconfig(8).

   Se puede crear la misma configuracion utilizando el fichero /etc/rc.conf.
   Para la maquina hostA seria algo asi:

 network_interfaces="lo0 hatm0"
 ifconfig_hatm0="inet 192.168.173.1 up"
 natm_static_routes="hostB hostC hostD"
 route_hostB="192.168.173.2 hatm0 0 100 llc/snap ubr"
 route_hostC="192.168.173.3 hatm0 0 101 llc/snap ubr"
 route_hostD="192.168.173.4 hatm0 0 102 llc/snap ubr"

   El estado de todas las rutas CLIP se puede obtener en todo momento con:

 hostA# atmconfig natm show

                               Parte V. Apendices

   Tabla de contenidos

   30. Como obtener FreeBSD

                30.1. Servidores FTP

                30.2. Uso de CVSup

   31. Bibliografia

                31.1. Libros y revistas especificas sobre FreeBSD

                31.2. Guias de usuario

                31.3. Guias de administrador

                31.4. Guias de programadores

                31.5. El sistema operativo por dentro

                31.6. Referencia de seguridad

                31.7. Referencia de hardware

                31.8. Historia de UNIX

                31.9. Diarios y revistas

   A. Recursos en Internet

                A.1. Listas de correo

                A.2. Grupos de noticias de Usenet

                A.3. Servidores WWW

                A.4. Direcciones de correo electronico

                A.5. Cuentas shell

   32. PGP keys

                32.1. Responsables

                32.2. Miembros del Core Team

   Indice

Capitulo 30. Como obtener FreeBSD

   Tabla de contenidos

   30.1. Servidores FTP

   30.2. Uso de CVSup

   Como obtener FreeBSD

30.1. Servidores FTP

    

30.2. Uso de CVSup

    

  30.2.1. Instalacion

    

  30.2.2. Servidores

    

    30.2.2.1. El fichero refuse

    

Capitulo 31. Bibliografia

   Tabla de contenidos

   31.1. Libros y revistas especificas sobre FreeBSD

   31.2. Guias de usuario

   31.3. Guias de administrador

   31.4. Guias de programadores

   31.5. El sistema operativo por dentro

   31.6. Referencia de seguridad

   31.7. Referencia de hardware

   31.8. Historia de UNIX

   31.9. Diarios y revistas

   Aunque las paginas del manual proveen la referencia definitiva para partes
   individuales del sistema operativo FreeBSD, son notorias por no ilustrar
   como poner todas las piezas juntas para hacer que todo el sistema
   operativo funcione facilmente. Debido a esto, no hay sustituto para un
   buen libro de administracion de sistemas UNIX y un buen manual de usuario.

31.1. Libros y revistas especificas sobre FreeBSD

   Libros y revistas internacionales:

     * Usando FreeBSD (en Chino).

     * FreeBSD for PC 98'ers (en japones), publicado por SHUWA System Co,
       LTD. ISBN 4-87966-468-5 C3055 P2900E.

     * FreeBSD (en japones), publicado por CUTT. ISBN 4-906391-22-2 C3055
       P2400E.

     * Introduccion completa a FreeBSD (en japones), publicado por Shoeisha
       Co., Ltd. ISBN 4-88135-473-6 P3600E.

     * Kit personal del principiante UNIX FreeBSD (en japones), publicado por
       ASCII. ISBN 4-7561-1733-3 P3000E.

     * Manual FreeBSD (traduccion del japones), publicado por ASCII. ISBN
       4-7561-1580-2 P3800E.

     * FreeBSD mit Methode (en aleman), publicado por Computer und Literatur
       Verlag/Vertrieb Hanser, 1998. ISBN 3-932311-31-0.

     * Manual de instalacion y utilizacion de FreeBSD (en japones), publicado
       por Mainichi Communications Inc..

   Libros y revistas en ingles:

     * The Complete FreeBSD, publicado por Walnut Creek CDROM.

31.2. Guias de usuario

     * Computer Systems Research Group, UC Berkeley. 4.4BSD User's Reference
       Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-075-9

     * Computer Systems Research Group, UC Berkeley. 4.4BSD User's
       Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN
       1-56592-076-7

     * UNIX in a Nutshell. O'Reilly & Associates, Inc., 1990. ISBN 093717520X

     * Mui, Linda. What You Need To Know When You Can't Find Your UNIX System
       Administrator. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-104-6

     * La Ohio State University ha escrito un Curso de introduccion a UNIX
       disponible en linea en formato HTML y postscript.

     * Jpman Project, Japan FreeBSD Users Group. FreeBSD User's Reference
       Manual (traduccion japonesa). Mainichi Communications Inc., 1998.
       ISBN4-8399-0088-4 P3800E.

31.3. Guias de administrador

     * Albitz, Paul and Liu, Cricket. DNS and BIND, 2nd Ed. O'Reilly &
       Associates, Inc., 1997. ISBN 1-56592-236-0

     * Computer Systems Research Group, UC Berkeley. 4.4BSD System Manager's
       Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-080-5

     * Costales, Brian, et al. Sendmail, 2nd Ed. O'Reilly & Associates, Inc.,
       1997. ISBN 1-56592-222-0

     * Frisch, AEleen. Essential System Administration, 2nd Ed. O'Reilly &
       Associates, Inc., 1995. ISBN 1-56592-127-5

     * Hunt, Craig. TCP/IP Network Administration. O'Reilly & Associates,
       Inc., 1992. ISBN 0-937175-82-X

     * Nemeth, Evi. UNIX System Administration Handbook. 2nd Ed. Prentice
       Hall, 1995. ISBN 0131510517

     * Stern, Hal Managing NFS and NIS O'Reilly & Associates, Inc., 1991.
       ISBN 0-937175-75-7

     * Jpman Project, Japan FreeBSD Users Group. FreeBSD System
       Administrator's Manual (traduccion japonesa). Mainichi Communications
       Inc., 1998. ISBN4-8399-0109-0 P3300E.

31.4. Guias de programadores

     * Asente, Paul. X Window System Toolkit. Digital Press. ISBN
       1-55558-051-3

     * Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's
       Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN
       1-56592-078-3

     * Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's
       Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN
       1-56592-079-1

     * Harbison, Samuel P. and Steele, Guy L. Jr. C: A Reference Manual. 4rd
       ed. Prentice Hall, 1995. ISBN 0-13-326224-3

     * Kernighan, Brian and Dennis M. Ritchie. The C Programming Language..
       PTR Prentice Hall, 1988. ISBN 0-13-110362-9

     * Lehey, Greg. Porting UNIX Software. O'Reilly & Associates, Inc., 1995.
       ISBN 1-56592-126-7

     * Plauger, P. J. The Standard C Library. Prentice Hall, 1992. ISBN
       0-13-131509-9

     * Stevens, W. Richard. Advanced Programming in the UNIX Environment.
       Reading, Mass. : Addison-Wesley, 1992 ISBN 0-201-56317-7

     * Stevens, W. Richard. UNIX Network Programming. 2nd Ed, PTR Prentice
       Hall, 1998. ISBN 0-13-490012-X

     * Wells, Bill. "Writing Serial Drivers for UNIX". Dr. Dobb's Journal.
       19(15), December 1994. pp68-71, 97-99.

31.5. El sistema operativo por dentro

     * Andleigh, Prabhat K. UNIX System Architecture. Prentice-Hall, Inc.,
       1990. ISBN 0-13-949843-5

     * Jolitz, William. "Porting UNIX to the 386". Dr. Dobb's Journal.
       January 1991-July 1992.

     * Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and John
       Quarterman The Design and Implementation of the 4.3BSD UNIX Operating
       System. Reading, Mass. : Addison-Wesley, 1989. ISBN 0-201-06196-1

     * Leffler, Samuel J., Marshall Kirk McKusick, The Design and
       Implementation of the 4.3BSD UNIX Operating System: Answer Book.
       Reading, Mass. : Addison-Wesley, 1991. ISBN 0-201-54629-9

     * McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and John
       Quarterman. The Design and Implementation of the 4.4BSD Operating
       System. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-54979-4

     * Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The Protocols.
       Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63346-9

     * Schimmel, Curt. Unix Systems for Modern Architectures. Reading, Mass.
       : Addison-Wesley, 1994. ISBN 0-201-63338-8

     * Stevens, W. Richard. TCP/IP Illustrated, Volume 3: TCP for
       Transactions, HTTP, NNTP and the UNIX Domain Protocols. Reading, Mass.
       : Addison-Wesley, 1996. ISBN 0-201-63495-3

     * Vahalia, Uresh. UNIX Internals -- The New Frontiers. Prentice Hall,
       1996. ISBN 0-13-101908-2

     * Wright, Gary R. and W. Richard Stevens. TCP/IP Illustrated, Volume 2:
       The Implementation. Reading, Mass. : Addison-Wesley, 1995. ISBN
       0-201-63354-X

31.6. Referencia de seguridad

     * Cheswick, William R. and Steven M. Bellovin. Firewalls and Internet
       Security: Repelling the Wily Hacker. Reading, Mass. : Addison-Wesley,
       1995. ISBN 0-201-63357-4

     * Garfinkel, Simson and Gene Spafford. Practical UNIX Security. 2nd Ed.
       O'Reilly & Associates, Inc., 1996. ISBN 1-56592-148-8

     * Garfinkel, Simson. PGP Pretty Good Privacy O'Reilly & Associates,
       Inc., 1995. ISBN 1-56592-098-8

31.7. Referencia de hardware

     * Anderson, Don and Tom Shanley. Pentium Processor System Architecture.
       2nd Ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40992-5

     * Ferraro, Richard F. Programmer's Guide to the EGA, VGA, and Super VGA
       Cards. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
       0-201-62490-7

     * La corporacion Intel publica documentacion sobre sus CPUs, chipsets y
       estandares en su web para desarrolladores, normalmente en archivos con
       formato PDF.

     * Shanley, Tom. 80486 System Architecture. 3rd ed. Reading, Mass. :
       Addison-Wesley, 1995. ISBN 0-201-40994-1

     * Shanley, Tom. ISA System Architecture. 3rd ed. Reading, Mass. :
       Addison-Wesley, 1995. ISBN 0-201-40996-8

     * Shanley, Tom. PCI System Architecture. 3rd ed. Reading, Mass. :
       Addison-Wesley, 1995. ISBN 0-201-40993-3

     * Van Gilluwe, Frank. The Undocumented PC. Reading, Mass: Addison-Wesley
       Pub. Co., 1994. ISBN 0-201-62277-7

31.8. Historia de UNIX

     * Lion, John Lion's Commentary on UNIX, 6th Ed. With Source Code. ITP
       Media Group, 1996. ISBN 1573980137

     * Raymond, Eric S. The New Hacker's Dictionary, 3rd edition. MIT Press,
       1996. ISBN 0-262-68092-0. Also known as the Jargon File

     * Salus, Peter H. A quarter century of UNIX. Addison-Wesley Publishing
       Company, Inc., 1994. ISBN 0-201-54777-5

     * Simon Garfinkel, Daniel Weise, Steven Strassmann. The UNIX-HATERS
       Handbook. IDG Books Worldwide, Inc., 1994. ISBN 1-56884-203-1

     * Don Libes, Sandy Ressler Life with UNIX - special edition.
       Prentice-Hall, Inc., 1989. ISBN 0-13-536657-7

     * The BSD family tree. 1997.
       ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree
       o local on a FreeBSD-current machine.

     * The BSD Release Announcements collection. 1997.
       http://www.de.FreeBSD.org/de/ftp/releases/

     * Networked Computer Science Technical Reports Library.
       http://www.ncstrl.org/

     * Antiguas releases BSD procedentes del Computer Systems Research Group
       (CSRG). http://www.mckusick.com/csrg/: El paquete de 4 CDs cubre todas
       las versiones de BSD desde la 1BSD hasta la 4.4BSD y 4.4BSD-Lite2
       (pero no la 2.11BSD, desafortunadamente). El ultimo disco contiene el
       codigo fuente final y los archivos SCCS.

31.9. Diarios y revistas

     * The C/C++ Users Journal. R&D Publications Inc. ISSN 1075-2838

     * Sys Admin - The Journal for UNIX System Administrators Miller Freeman,
       Inc., ISSN 1061-2688

Apendice A. Recursos en Internet

   Tabla de contenidos

   A.1. Listas de correo

   A.2. Grupos de noticias de Usenet

   A.3. Servidores WWW

   A.4. Direcciones de correo electronico

   A.5. Cuentas shell

   La velocidad del desarrollo de FreeBSD hace imposible el uso de medios
   impresos como forma de seguir los ultimos desarrollos. Los recursos
   electronicos son la mejor, y con frecuencia la unica, manera de estar
   informados de los ultimos avances. Dado que FreeBSD es sacado adelante
   mediante el trabajo de voluntarios la propia comunidad de usuarios suele
   ejercer las funciones de lo que seria un "departamento de soporte
   tecnico", siendo el correo electronico y USENET la manera mas efectiva de
   contactar con esa comunidad.

   Las formas de contacto con la comunidad de usuarios de FreeBSD estan
   detalladas a continuacion. Si usted sabe de algun otro medio que no figure
   aqui envielo por favor a lista de correo del proyecto de documentacion de
   FreeBSDpara que pueda ser incluida.

A.1. Listas de correo

   Aunque la practica totalidad de los desarrolladores de FreeBSD leen USENET
   no podemos garantizar de modo rotundo que recibiremos sus dudas
   rapidamente (o siquiera que las recibamos) si usted las envia a uno de los
   grupos de comp.unix.bsd.freebsd.*. Enviando sus dudas a la lista de correo
   apropiada cumplira dos objetivos, llegar a los desarrolladores y a una
   audiencia especifica, lo que le asegurara la mejor (o al menos la mas
   rapida) respuesta.

   Las normas de las diversas listas estan al principio de este documento.
   Por favor, lea las normas antes de suscribirse o enviar correo a ninguna
   lista. Muchos suscriptores de nuestras listas reciben varios cientos de
   mensajes relacionados con FreeBSD cada dia y estableciendo las normas de
   uso de las listas intentamos mantener alto el interes de los mensajes que
   en ella circulan. Bajarlo haria fallar a las listas de correo como un
   medio de comunicacion efectivo para el proyecto.

   Todas las listas de correo son archivadas y se pueden hacer busquedas en
   ellas desde el servidor WWW de FreeBSD usando este enlace. El archivo
   ofrece la posibilidad de usar palabras clave, lo que lo convierte en una
   excelente manera de buscar respuestas a preguntas frecuentes y deberia ser
   consultado antes de enviar ninguna duda.

  A.1.1. Indice de listas

   Listas generales:Las siguientes son listas generales de suscripcion libre
   (y muy recomendable):

         Lista                              Proposito                         
   cvs-all           Cambios realizados en el arbol de codigo de FreeBSD      
   freebsd-advocacy  Proselitismo de FreeBSD                                  
   freebsd-announce  Sucesos importantes e hitos del proyecto                 
   freebsd-arch      Debates de arquitectura y disenos                        
   freebsd-bugs      Informes de errores                                      
   freebsd-chat      Temas no tecnicos relacionados con la comunidad FreeBSD. 
   freebsd-config    Desarrollo de herramientas de instalacion y              
                     configuracion de FreeBSD                                 
   freebsd-current   Debates acerca del uso de FreeBSD-current                
   freebsd-isp       Consultas de Proveedores de Servicios de Internet que    
                     usan FreeBSD                                             
   freebsd-jobs      Oportunidades de trabajo y consultoria bajo FreeBSD      
   freebsd-newbies   Actividades y discusiones de nuevos usuarios de FreeBSD  
   freebsd-policy    Decisiones estrategicas del Core Team de FreeBSD. Bajo   
                     volumen y solo lectura                                   
   freebsd-questions Preguntas de usuarios y soporte tecnico                  
   freebsd-stable    Debates acerca del uso de FreeBSD-stable                 
   freebsd-test      Un sitio al que mandar sus mensajes de prueba en lugar   
                     de a una de las demas listas                             

   Listas Tecnicas: Las siguientes listas son para debates tecnicos. Deberia
   leer cuidadosamente las normas de cada lista antes de suscribirse o enviar
   correos, dado que hay normas estrictas en cuanto a su uso y contenidos.

               Lista                               Proposito                  
   freebsd-afs                    Porte de AFS a FreeBSD                      
   freebsd-alpha                  Porte FreeBSD a Alpha                       
   freebsd-arm                    Porte de FreeBSD para procesadores ARM      
   freebsd-atm                    Uso de redes ATM con FreeBSD                
   freebsd-audit                  Proyecto de auditoria del codigo fuente     
   freebsd-binup                  Diseno y desarrollo del sistema de          
                                  actualizacion binaria                       
   freebsd-cluster                Uso de FreeBSD en entornos cluster          
   freebsd-database               Debates sobre uso de bases de datos y su    
                                  desarrollo bajo FreeBSD                     
   freebsd-doc                    Creacion de documentacion sobre FreeBSD     
   freebsd-emulation              Emulacion de otros sistemas como            
                                  Linux/DOS/Windows                           
   freebsd-firewire               Debates tecnicos sobre Firewire (iLink,     
                                  IEEE 1394)                                  
   freebsd-fs                     Sistemas de ficheros                        
   freebsd-hackers                Debates tecnicos generales                  
   freebsd-hardware               Debates generales sobre harware y su uso en 
                                  FreeBSD                                     
   freebsd-i18n                   Internacionalizacion de FreeBSD             
   freebsd-ia64                   Porte de FreeBSD a los proximos sistemas    
                                  IA64 de Intel                               
   freebsd-ipfw                   Debates tecnicos sobre el rediseno del      
                                  codigo del cortafuegos IP                   
   freebsd-isdn                   Desarrolladores de RDSI                     
   freebsd-java                   Desarrolladores de Java y personas portando 
                                  los JDK a FreeBSD                           
   freebsd-libh                   La segunda generacion del sistema de        
                                  instalacion y paquetes                      
   freebsd-mobile                 Debates sobre equipos portatiles            
   freebsd-mozilla                Porte de mozilla a FreeBSD                  
   freebsd-multimedia             Aplicaciones multimedia                     
   freebsd-new-bus                Debates tecnicos sobre la arquitectura de   
                                  bus                                         
   freebsd-net                    Debates sobre el codigo fuente de Redes y   
                                  TCP/IP                                      
   freebsd-platforms              Especifica sobre plataformas de             
                                  arquitectura no Intel                       
   freebsd-ports                  Debates sobre la coleccion de ports         
   freebsd-ppc                    Porte de FreeBSD a PowerPC                  
   freebsd-qa                     Debates sobre Control de Calidad,           
                                  generalmente al salir una nueva release     
   freebsd-realtime               Desarrollo de extensiones en tiempo real en 
                                  FreeBSD                                     
   freebsd-scsi                   El subsistema SCSI                          
   freebsd-security               Temas de seguridad                          
   freebsd-security-notifications Avisos de seguridad                         
   freebsd-small                  Uso de FreeBSD en aplicaciones embebidas    
   freebsd-smp                    Debates sobre diseno de Multiproceso        
                                  [A]Simetrico                                
   freebsd-sparc                  Porte de FreeBSD a sistemas Sparc           
   freebsd-standards              Cumplimiento de las normas C99 y POSIX en   
                                  FreeBSD                                     
   freebsd-tokenring              Soporte de Token Ring en FreeBSD            

   Listas limitadas:Las siguientes listas son para una audiencia mas
   especializada (e interesada)y probablemente no son de interes para el
   publico en general. Es una buena idea tener una presencia estable en las
   listas tecnicas antes de suscribirse a alguna de las limitadas, de modo
   que se pueda entender la etiqueta de la comunicacion que en ellas se usa.

          Lista                              Proposito                        
   freebsd-core        FreeBSD Core Team                                      
   freebsd-hubs        Mantenimiento de mirrors (mantenimiento de             
                       infraestructuras)                                      
   freebsd-install     Desarrollo de la Instalacion                           
   freebsd-user-groups Coordinacion de grupos de usuarios                     
   freebsd-www         Mantenimiento de www.FreeBSD.org                       

   Listas Compendio:La mayoria de las listas citadas son accesibles como
   compendio. Los nuevos mensajes enviados a la lista son guardados y
   enviados como un unico correo cuando el archivo llega a un tamano cercano
   a los 100 Kb. Las listas accesibles como compendio son:

            Lista           
   freebsd-afs-digest       
   freebsd-alpha-digest     
   freebsd-chat-digest      
   freebsd-current-digest   
   freebsd-cvs-all-digest   
   freebsd-database-digest  
   freebsd-hackers-digest   
   freebsd-ia64-digest      
   freebsd-isdn-digest      
   freebsd-java-digest      
   freebsd-questions-digest 
   freebsd-security-digest  
   freebsd-sparc-digest     
   freebsd-stable-digest    
   freebsd-test-digest      

   Listas CVS:Las siguientes listas son para gente interesada en llevar un
   seguimiento de los mensajes en el registro para conocer los cambios hechos
   en las diferentes areas del arbol de codigo fuente. Son listas de solo
   lectura y no se debe enviar correo a ellas.

    Lista  Area de codigo    Descripcion de area de codigo (codigo fuente)    
   cvs-all /usr/src       Todos los cambios al arbol de codigo                
                          (superconjunto)                                     

  A.1.2. Como suscribirse

   Todas las listas de correo estan en FreeBSD.org, de manera que para enviar
   correo a la lista "nombredelista" simplemente hay que escribir a
   <nombredelista@FreeBSD.org>. Desde ahi sera redistribuido a los miembros
   de la lista de correo a lo largo y ancho del mundo.

   Para suscribirse a una lista envie un correo a <majordomo@FreeBSD.org>
   incluyendo

 subscribe <listname> [<optional address>]

   en el cuerpo del mensaje. Por ejemplo, para suscribirse a freebsd-announce
   usted haria esto:

 % mail majordomo@FreeBSD.org
 subscribe freebsd-announce
 ^D

   Si quisiera suscribirse bajo otro nombre o enviar una peticion de
   suscripcion para una lista de correo local (un sistema muy eficiente si
   dispone de varias personas interesadas que tengan cuentas de correo en un
   mismo servidor !esto nos facilita mucho el trabajo!) esto es lo que debe
   hacer:

 % mail majordomo@FreeBSD.org
 subscribe freebsd-announce local-announce@ejemplo.com
 ^D

   Por ultimo, tambien es posible desuscribirse de una lista, obtener una
   lista de los suscriptores de una lista u obtener una lista de las listas
   de correo disponibles enviando otro tipo de mensajes de control a
   majordomo. Para obtener una lista completa de las ordenes disponibles haga
   esto:

 % mail majordomo@FreeBSD.org
 help
 ^D

   De nuevo quisieramos pedirle que procure mantener los debates de las
   listas tecnicas dentro de temas tecnicos. Si lo unico que usted quiere es
   recibir avisos importantes le sugerimos que se suscriba a
   freebsd-announce, que esta pensada para tener un trafico muy bajo.

  A.1.3. Normas de las listas

   Todas las listas de correo de FreeBSD tienen ciertas normas elementales
   que han de ser respetadas por cualquiera que las use. Quien no se atenga a
   ellas recibira hasta dos (2) advertencias escritas del Postmaster de
   FreeBSD <postmaster@FreeBSD.org>, despues de las cuales, a la tercera
   falta, el suscriptor sera borrado de todas las listas de correo de FreeBSD
   y filtrado para evitar futuros envios. Lamentamos que esas normas y
   medidas sean necesarias, pero la Internet de hoy es, segun parece, un
   entorno bastante conflictivo, y mucha gente no se da cuenta de cuan
   fragiles son algunos de sus mecanismos.

   Normas a respetar:

     * El tema de cualquier envio debe atenerse al fin basico de la lista a
       la que se escribe, esto es, si la lista es sobre temas de debate
       tecnico sus envios deberian versar sobre temas tecnicos. Enviar
       mensajes irrelevantes o insultos solo sirve para deteriorar el valor
       de la lista de correo para sus miembros y no sera tolerado. Para
       discusiones libres sin un tema en particular esta la lista de correo
       freebsd-chat <freebsd-chat@FreeBSD.org>, que es libremente accesible y
       hecha para este proposito.

     * No se deberia enviar el mismo mensaje a mas de dos listas, y solamente
       a 2 cuando exista una necesidad manifiesta de escribir a ambas listas.
       Hay una gran cantidad de personas suscritas a mas de una lista y
       excepto para las mezclas mas esotericas (digamos "-stable & -scsi") no
       hay razon para enviar un mensaje a mas de una lista al mismo tiempo.
       Si le envian un mensaje en el que aparecen multiples listas de correo
       en la linea "Cc" de la cabecera, dicha linea debe ser recortada antes
       de que envie una respuesta. Usted es el responsable de sus propios
       envios cruzados, independientemente de quien fuese el remitente
       original.

     * No estan admitidos los ataques personales ni la blasfemia (dentro del
       contexto o como argumento) y eso incluye tanto a usuarios como a
       desarrolladores. Violaciones graves de la netiqueta, como reenviar o
       extractar mensajes privados sin permiso ni visos de tenerlo, esta mal
       visto, aunque no prohibido especificamente. Sin embargo, hay pocos
       casos en los que algo asi encaje en la tematica de una lista, por lo
       cual lo mas probable es recibir una advertencia (o ser expulsado) tan
       solo a causa de ello.

     * El anuncio de productos o servicios no relacionados con FreeBSD estan
       estrictamente prohibidas y conllevaran la inmediata expulsion de la
       lista si queda demostrado que el autor esta practicando el "spam" o
       envio de correo no solicitado.

   Normas de las listas individuales:

   FREEBSD-AFS

           Sistema de Ficheros Andrew

           Esta lista es para debates sobre el porte y uso de AFS, de
           CMU/Transarc

   FREEBSD-ANNOUNCE

           Sucesos importantes / hitos

           Esta es la lista de correo para gente interesada en recibir
           exclusivamente avisos de sucesos importantes dentro de FreeBSD.
           Esto incluye anuncios sobre SNAPSHOTS y otras versiones. Puede
           incluir tambien peticiones de voluntarios, etc. Es una lista de
           bajo volumen y estrictamente moderada.

   FREEBSD-ARCH

           Debates sobre arquitectura y diseno

           Esta lista es para debates sobre la arquitectura de FreeBSD. Los
           mensajes deberian mantenerse dentro del ambito tecnico para el que
           fue creada la lista. Serian ejemplos de temas aptos para esta
           lista:

              * Como reorganizar el sistema de construccion ("build") para
                poder tener varios procesos de construccion personalizados
                funcionando simultaneamente.

              * Que se necesita arreglar en el VFS para que funcionen las
                capas de Heidemann.

              * Como cambiar el dispositivo de control de interfaces para que
                sea posible utilizar los mismos controladores directamente en
                la mayoria de los buses y arquitecturas.

              * Como escribir un controlador de red.

   FREEBSD-AUDIT

           Proyecto de auditoria del codigo fuente

           Esta es la lista de correo del proyecto de auditoria del codigo
           fuente de FreeBSD. Aunque en principio fue puesta en marcha para
           cambios motivados por la seguridad su ambito fue ampliado a la
           revision de cualquier cambio en el codigo.

           En esta lista circula una gran cantidad de parches y probablemente
           no sea de interes para el tipico usuario de FreeBSD. Las
           discusiones de seguridad que no esten relacionadas con una parte
           especifica del codigo deben tener lugar en freebsd-security. Por
           otra parte se ruega a todos los desarrolladores que envien sus
           parches a esta lista para su revision, especialmente si atanen a
           una parte del sistema donde un error pudiera afectar seriamente a
           la integridad del sistema.

   FREEBSD-BINUP

           Proyecto de Actualizacion Binaria de FreeBSD

           Esta lista existe para facilitar el debate sobre el sistema de
           actualizacion binaria o binup. Caracteristicas de diseno, detalles
           de implementacion, parches, informes de error, informes de estado,
           peticiones de caracteristicas, "commit logs" y en general todo lo
           relacionado con binup es bienvenido.

   FREEBSD-BUGS

           Informe de errores

           Esta es la lista de correo para informar de errores en FreeBSD.
           Siempre que sea posible los errores deberian ser enviados mediante
           send-pr(1) o el interfaz WEB

   FREEBSD-CHAT

           Temas no tecnicos relacionados con la comunidad FreeBSD

           Esta lista contiene todos los mensajes sobre informacion no
           tecnica y social, contenidos que no tienen cabida en las demas
           listas. Eso incluye discusiones sobre si Julio Iglesias parece una
           gargola, sobre si escribir o no en mayusculas, quien esta bebiendo
           demasiado cafe, donde se elabora la mejor cerveza, quien esta
           fabricando cerveza en su sotano y asi sucesivamente. Pueden
           hacerse anuncios sobre actos importantes (como proximas fiestas,
           congresos, bodas, nacimientos, nuevos trabajos, etc.), pero las
           respuestas deben ser dirigidas a esta misma lista.

   FREEBSD-CORE

           FreeBSD Core Team

           Esta es la lista de correo interna para uso de los miembros del
           Core Team. Los mensajes pueden ser enviados a esta lista cuando un
           problema serio relacionado con FreeBSD necesite un estudio o
           arbitraje de alto nivel.

   FREEBSD-CURRENT

           Debates sobre el uso de FreeBSD-current

           Esta es la lista de correo para usuarios de freebsd-current. Esto
           incluye advertencias sobre nuevas caracteristicas a ser incluidas
           en -current que afecten a todos los usuarios e instrucciones paso
           por paso que deben ser seguidas para mantener una instalacion
           -current. Cualquier usuario de "current" deberia suscribirse a
           esta lista. Esta es una lista de correo tecnica en la que se
           esperan contenidos estrictamente tecnicos.

   FREEBSD-CURRENT-DIGEST

           Debates sobre el uso de FreeBSD-current

           Este es el compendio de la lista freebsd-current. Consiste en que
           todos los mensajes enviados a freebsd-current son empaquetados y
           enviados periodicamente como un solo mensaje. Esta lista es de
           Solo-Lectura y no deberia recibir correo.

   FREEBSD-DOC

           Proyecto de Documentacion

           Esta lista de correo esta destinada a discusiones relacionadas con
           cuestiones y proyectos relacionados con la creacion de
           documentacion de FreeBSD. Los miembros de esta lista son llamados
           "El Proyecto de Documentacion de FreeBSD". La lista es abierta;
           !suscribase y contribuya!.

   FREEBSD-FIREWIRE

           Firewire (iLink, IEEE 1394)

           Esta lista de correo es para debates sobre diseno e implementacion
           del subsistema Firewire(tambien conocido como IEEE o iLink) en
           FreeBSD. Los temas incluyen de modo especifico los "standards",
           dispositivos de bus y sus protocolos, adaptacion de placas base,
           tarjetas y chips y la arquitectura e implementacion de codigo para
           soporte nativo.

   FREEBSD-FS

           Sistemas de ficheros

           Debates acerca del sistema de ficheros de FreeBSD. Esta es una
           lista de correo tecnica en la que se espera un contenido
           estrictamente tecnico.

   FREEBSD-GNOME

           GNOME

           Debates acerca del Entorno de Escritorio GNOME para sistemas de
           ficheros FreeBSD. Esta es una lista de correo tecnica en la que se
           espera un contenido estrictamente tecnico.

   FREEBSD-IPFW

           Cortafuegos IP

           Este es el foro de discusion tecnica dedicado al rediseno del
           codigo del cortafuegos IP de FreeBSD. Esta es una lista de correo
           tecnica en la que se espera un contenido exclusivamente tecnico.

   FREEBSD-IA64

           Porte de FreeBSD a IA64

           Esta es una lista de correo tecnica para personas que estan
           trabajando en el porte de FreeBSD a la plataforma IA-64 de Intel,
           para intercambiar problemas y soluciones alternativas. Cualquier
           persona interesada en seguir las discusiones tecnicas es
           bienvenida.

   FREEBSD-ISDN

           Comunicaciones RDSI

           Esta es la lista de correo para quienes participan en el
           desarrollo del soporte RDSI para FreeBSD.

   FREEBSD-JAVA

           Desarrollo Java

           Esta es la lista de correo sobre el desarrollo de aplicaciones
           Java importantes para FreeBSD y el porte y mantenimiento de los
           JDK.

   FREEBSD-HACKERS

           Debates tecnicos

           Este es un foro de debate tecnico relacionado con FreeBSD. Esta es
           la lista de correo tecnica primaria. Es para personas que estan
           trabajando en FreeBSD, solucionando problemas o para discutir
           soluciones alternativas. Las personas interesadas en seguir las
           discusiones tecnicas tambien son bienvenidas. Esta es una lista de
           correo tecnica en la cual se espera un contenido estrictamente
           tecnico.

   FREEBSD-HACKERS-DIGEST

           Technical discussions

           Este es el compendio de la lista de correo freebsd-hackers.
           Consiste en que todo el correo enviado a freebsd-hackers es
           empaquetado y enviado en un solo mensaje. Esta lista es de Solo
           Lectura y no se deberia enviar correo a ella.

   FREEBSD-HARDWARE

           Discusiones generales sobre hardware y FreeBSD

           Discusiones generales sobre tipos de hardware que funciona en
           FreeBSD, diferentes problemas y sugerencias sobre que comprar y
           que no.

   FREEBSD-HUBS

           Replicas

           Avisos y discusiones para personas que administran sitios replica.

   FREEBSD-INSTALL

           Discusiones sobre la instalacion

           Esta lista de correo es para discusiones sobre el desarrollo de la
           instalacion de FreeBSD en proximas versiones.

   FREEBSD-ISP

           Cuestiones de Proveedores de Servicios de Internet

           Esta lista de correo es para debates sobre temas relevantes para
           Proveedores de Servicios de Internet (ISP) que usan FreeBSD. Es
           una lista de correo tecnica y en ella se esperan contenidos
           estrictamente tecnicos.

   FREEBSD-NEWBIES

           Debates sobre actividades de los novatos

           Cubrimos todas las actividades de los novatos que no quedan
           cubiertas por ninguna de las otras, incluyendo: aprendizaje
           autodidacta y tecnicas de resolucion de problemas, busqueda y uso
           de recursos y peticiones de ayuda, como usar las listas de correo
           y que lista usar, charla en general, meter la pata, jactarse,
           compartir ideas, historias, soporte moral (pero no tecnico) e
           implicacion en la comunidad FreeBSD. Usamos freebsd-questions para
           enviar nuestros problemas y peticiones de soporte y usamos
           freebsd-newbies para conocer a gente que esta haciendo lo mismo
           que nosotros cuando eramos novatos.

   FREEBSD-PLATFORMS

           Porte a plataformas no Intel

           Cuestiones sobre plataformas diversas, debates generales, y
           propuestas para portes de FreeBSD para plataformas no Intel. Es
           una lista de correo tecnica y en ella se esperan contenidos
           estrictamente tecnicos.

   FREEBSD-POLICY

           Decisiones de funcionamiento interno del Core Team

           Es una lista de solo lectura y bajo volumen destinada a la toma de
           decisiones de funcionamento interno del Core Team de FreeBSD.

   FREEBSD-PORTS

           Debates sobre "ports"

           Debates acerca de la "coleccion de ports" (/usr/ports)de FreeBSD,
           propuestas de aplicaciones a portar, modificaciones a la
           infraestructura de ports y coordinacion general de esfuerzos. Esta
           es una lista de correo tecnica en la cual se esperan contenidos
           exclusivamente tecnicos.

   FREEBSD-QUESTIONS

           Preguntas de los usuarios

           Esta es la lista de correo para preguntas sobre FreeBSD. No
           deberia enviar preguntas del estilo de "como hacer" a las listas
           tecnicas salvo que el contenido sea claramente tecnico.

   FREEBSD-QUESTIONS-DIGEST

           Preguntas de los usuarios

           Este es el compendio de la lista de correo freebsd-questions.
           Consiste en que todos los mensajes enviados a freebsd-questions
           son empaquetados y enviados en un unico mensaje.

   FREEBSD-SCSI

           Subsistema SCSI

           Esta es la lista de correo para la gente que esta trabajando en el
           subsistema SCSI de FREEBSD. Esta es una lista de correo tecnica en
           la cual se esperan contenidos puramente tecnicos.

   FREEBSD-SECURITY

           Cuestiones de seguridad

           Cuestiones de seguridad informatica (DES, Kerberos, problemas de
           seguridad conocidos y sus soluciones, etc.) Esta es una lista de
           correo tecnica en la que se esperan contenidos puramente tecnicos.

   FREEBSD-SECURITY-NOTIFICATIONS

           Avisos de seguridad

           Avisos de problemas de seguridad en FreeBSD y sus soluciones. Esta
           no es una lista de discusion. La lista de discusion es
           freebsd-security.

   FREEBSD-SMALL

           Uso de FreeBSD en aplicaciones embebidas

           En esta lista se debaten temas relacionados con instalaciones de
           FreeBSD inusualmente pequenas y embebidas. Esta es una lista de
           correo tecnica en la cual se esperan contenidos estrictamente
           tecnicos.

   FREEBSD-STABLE

           Debates sobre el uso de FreeBSD-stable

           Esta es la lista de correo para los usuarios de freebsd-stable.
           Incluye avisos sobre nuevas caracteristicas a incluir en -stable
           que afectan a los usuarios e instrucciones paso por paso para
           permanecer usando la version -stable. Cualquiera que utilice
           FreeBSD "stable" deberia suscribirse a esta lista. Esta es una
           lista tecnica en la que se esperan contenidos puramente tecnicos.

   FREEBSD-STANDARDS

           Cumplimiento de C99 & POSIX

           Este es el foro para debates tecnicos relacionadas con el
           Cumplimiento de las normas C99 y POSIX en FreeBSD.

   FREEBSD-USER-GROUPS

           Lista de coordinacion de de grupos de usuarios

           Esta es la lista de correo de los coordinadores de los grupos
           locales de usuarios para discutir cuestiones entre ellos o con
           personas elegidas del Core Team. Esta lista de correo deberia
           estar limitada a resumenes de reuniones y coordinacion de
           proyectos que atanen a los Grupos de Usuarios.

   FREEBSD-VENDORS

           VENDORS

           Debates para la coordinacion entre el Proyecto FreeBSD y
           Distribuidores de software y hardware para FreeBSD.

A.2. Grupos de noticias de Usenet

   Ademas de los dos grupos de noticias especificos de FreeBSD hay muchos
   otros en los cuales se habla sobre FreeBSD o son de algun modo
   interesantes para usuarios de FreeBSD.Hay un archivo donde hacer busquedas
   donde pueden encontrarse algunos de esos grupos de noticias por cortesia
   de Warren Toomey <wkt@cs.adfa.edu.au>.

  A.2.1. Grupos de noticias especificos sobre BSD

     * comp.unix.bsd.freebsd.announce

     * comp.unix.bsd.freebsd.misc

  A.2.2. Otros grupos de noticias interesantes sobre Unix

     * comp.unix

     * comp.unix.questions

     * comp.unix.admin

     * comp.unix.programmer

     * comp.unix.shell

     * comp.unix.user-friendly

     * comp.security.unix

     * comp.sources.unix

     * comp.unix.advocacy

     * comp.unix.misc

     * comp.bugs.4bsd

     * comp.bugs.4bsd.ucb-fixes

     * comp.unix.bsd

  A.2.3. Sistema X Window

     * comp.windows.x.i386unix

     * comp.windows.x

     * comp.windows.x.apps

     * comp.windows.x.announce

     * comp.windows.x.intrinsics

     * comp.windows.x.motif

     * comp.windows.x.pex

     * comp.emulators.ms-windows.wine

A.3. Servidores WWW

     * http://www.FreeBSD.org/ - Servidor Central.

     * http://www.au.FreeBSD.org/ - Australia/1.

     * http://www2.au.FreeBSD.org/ - Australia/2.

     * http://www3.au.FreeBSD.org/ - Australia/3.

     * http://freebsd.itworks.com.au/ - Australia/4.

     * http://www.br.FreeBSD.org/www.freebsd.org/ - Brasil/1.

     * http://www2.br.FreeBSD.org/www.freebsd.org/ - Brasil/2.

     * http://www3.br.FreeBSD.org/ - Brasil/3.

     * http://www.bg.FreeBSD.org/ - Bulgaria.

     * http://www.ca.FreeBSD.org/ - Canada/1.

     * http://www2.ca.FreeBSD.org/ - Canada/2.

     * http://www3.ca.FreeBSD.org/ - Canada/3.

     * http://www.cn.FreeBSD.org/ - China.

     * http://www.cz.FreeBSD.org/ - Republica Checa.

     * http://www.dk.FreeBSD.org/ - Dinamarca.

     * http://www.ee.FreeBSD.org/ - Estonia.

     * http://www.fi.FreeBSD.org/ - Finlandia.

     * http://www.fr.FreeBSD.org/ - Francia.

     * http://www.de.FreeBSD.org/ - Alemania/1.

     * http://www1.de.FreeBSD.org/ - Alemania/2.

     * http://www2.de.FreeBSD.org/ - Alemania/3.

     * http://www.gr.FreeBSD.org/ - Grecia.

     * http://www.hu.FreeBSD.org/ - Hungria.

     * http://www.is.FreeBSD.org/ - Islandia.

     * http://www.ie.FreeBSD.org/ - Irlanda.

     * http://www.jp.FreeBSD.org/www.FreeBSD.org/ - Japon.

     * http://www.kr.FreeBSD.org/ - Corea/1.

     * http://www2.kr.FreeBSD.org/ - Corea/2.

     * http://www.lv.FreeBSD.org/ - Letonia.

     * http://rama.asiapac.net/freebsd/ - Malasia.

     * http://www.nl.FreeBSD.org/ - Holanda/1.

     * http://www2.nl.FreeBSD.org/ - Holanda/2.

     * http://www.no.FreeBSD.org/ - Noruega.

     * http://www.nz.FreeBSD.org/ - Nueva Zelanda.

     * http://www.pl.FreeBSD.org/ - Polonia/1.

     * http://www2.pl.FreeBSD.org/ - Polonia/2.

     * http://www.pt.FreeBSD.org/ - Portugal/1.

     * http://www2.pt.FreeBSD.org/ - Portugal/2.

     * http://www3.pt.FreeBSD.org/ - Portugal/3.

     * http://www.ro.FreeBSD.org/ - Rumania.

     * http://www.ru.FreeBSD.org/ - Rusia/1.

     * http://www2.ru.FreeBSD.org/ - Rusia/2.

     * http://www3.ru.FreeBSD.org/ - Rusia/3.

     * http://www4.ru.FreeBSD.org/ - Rusia/4.

     * http://freebsd.s1web.com/ - Singapur.

     * http://www.sk.FreeBSD.org/ - Republica Eslovaca.

     * http://www.si.FreeBSD.org/ - Eslovenia.

     * http://www.es.FreeBSD.org/ - Espana.

     * http://www.za.FreeBSD.org/ - Sudafrica/1.

     * http://www2.za.FreeBSD.org/ - Sudafrica/2.

     * http://www.se.FreeBSD.org/ - Suecia.

     * http://www.ch.FreeBSD.org/ - Suiza.

     * http://www.tw.FreeBSD.org/www.freebsd.org/data/ - Taiwan.

     * http://www.tr.FreeBSD.org/ - Turquia.

     * http://www.ua.FreeBSD.org/www.freebsd.org/ - Ucrania/1.

     * http://www2.ua.FreeBSD.org/ - Ucrania/2.

     * http://www4.ua.FreeBSD.org/ - Ucrania/Crimea.

     * http://www.uk.FreeBSD.org/ - Reino Unido/1.

     * http://www2.uk.FreeBSD.org/ - Reino Unido/2.

     * http://www3.uk.FreeBSD.org/ - Reino Unido/3.

     * http://www6.FreeBSD.org/ - USA/Oregon.

     * http://www2.FreeBSD.org/ - USA/Tejas.

A.4. Direcciones de correo electronico

   Los siguientes grupos de usuarios de FreeBSD proveen a sus miembros de
   direcciones de correo. Dichos administradores se reservan el derecho de
   retirar el uso de la direccion si se abusa de ella de cualquier manera.

+-----------------------------------------------------------------------------------+
|                   | Recursos  |                              |                    |
|      Dominio      |  que se   |      Grupo de Usuarios       |   Administrador    |
|                   |suministran|                              |                    |
|-------------------+-----------+------------------------------+--------------------|
|ukug.uk.FreeBSD.org|Solo       |<freebsd-users@uk.FreeBSD.org>|Lee Johnston        |
|                   |redireccion|                              |<lee@uk.FreeBSD.org>|
+-----------------------------------------------------------------------------------+

A.5. Cuentas shell

   Los siguientes grupos de usuarios facilitan cuentas shell a gente que
   apoya activamente el proyecto FreeBSD. Sus respectivos administradores se
   reservan el derecho de cancelar la cuenta y si se abusa de ella de algun
   modo.

   +------------------------------------------------------------------------+
   |                       |              | Servicios  |                    |
   |       Servidor        |Tipo de acceso|   que se   |   Administrador    |
   |                       |              |  ofrecen   |                    |
   |-----------------------+--------------+------------+--------------------|
   |                       |              |CVS de solo |                    |
   |                       |              |lectura,    |                    |
   |storm.uk.FreeBSD.org   |SSH only      |espacio web |Brian Somers        |
   |                       |              |personal,   |                    |
   |                       |              |correo      |                    |
   |                       |              |electronico |                    |
   |-----------------------+--------------+------------+--------------------|
   |                       |              |Correo      |                    |
   |dogma.freebsd-uk.eu.org|Telnet/FTP/SSH|electronico,|Lee Johnston        |
   |                       |              |espacio web,|<lee@uk.FreeBSD.org>|
   |                       |              |FTP Anonimo |                    |
   +------------------------------------------------------------------------+

Capitulo 32. PGP keys

   Tabla de contenidos

   32.1. Responsables

   32.2. Miembros del Core Team

   En caso de que necesites verificar una firma o enviar un mail encriptado a
   alguno de los responsables o miembros del core team, aqui tienes una serie
   de claves para uso.

32.1. Responsables

  32.1.1. Responsable de Seguridad de FreeBSD <security-officer@freebsd.org>

 FreeBSD Security Officer <security-officer@freebsd.org>
 Fingerprint = 41 08 4E BB DB 41 60 71  F9 E5 0E 98 73 AF 3F 11

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3i

 mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL
 h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L
 Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR
 tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl
 ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU
 tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7
 PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql
 3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz
 QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV
 nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A
 3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD
 /REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb
 5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS
 9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B
 sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P
 BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT
 0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx
 ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD
 ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO
 v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1
 lw==
 =ipyA
 -----END PGP PUBLIC KEY BLOCK-----

  32.1.2. Warner Losh

 Warner Losh <imp@village.org>
         aka <imp@freebsd.org>
 Fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.2

 mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH
 V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o
 EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR
 tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u
 c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g
 C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB
 5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ
 MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs
 BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN
 a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag
 YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn
 icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C
 dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a
 k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+
 RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU
 rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO
 3gTYx+Nlo6xqjR+J2NnBYU8p =7fQV
 -----END PGP PUBLIC KEY BLOCK-----

32.2. Miembros del Core Team

  32.2.1. Satoshi Asami

 Satoshi Asami <asami@cs.berkeley.edu>
           aka <asami@FreeBSD.ORG>
 Fingerprint = EB 3C 68 9E FB 6C EB 3F  DB 2E 0F 10 8F CE 79 CA

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.2

 mQCNAzPVyoQAAAEEAL7W+kipxB171Z4SVyyL9skaA7hG3eRsSOWk7lfvfUBLtPog
 f3OKwrApoc/jwLf4+Qpdzv5DLEt/6Hd/clskhJ+q1gMNHyZ5ABmUxrTRRNvJMTrb
 3fPU3oZj7sL/MyiFaT1zF8EaMP/iS2ZtcFsbYOqGeA8E/58uk4NA0SoeCNiJAAUR
 tCVTYXRvc2hpIEFzYW1pIDxhc2FtaUBjcy5iZXJrZWxleS5lZHU+iQCVAwUQM/AT
 +EqGN2HYnOMZAQF11QP/eSXb2FuTb1yX5yoo1Im8YnIk1SEgCGbyEbOMMBznVNDy
 5g2TAD0ofLxPxy5Vodjg8rf+lfMVtO5amUH6aNcORXRncE83T10JmeM6JEp0T6jw
 zOHKz8jRzygYLBayGsNIJ4BGxa4LeaGxJpO1ZEvRlNkPH/YEXK5oQmq9/DlrtYOJ
 AEUDBRAz42JT8ng6GBbVvu0BAU8nAYCsJ8PiJpRUGlrz6rxjX8hqM1v3vqFHLcG+
 G52nVMBSy+RZBgzsYIPwI5EZtWAKb22JAJUDBRAz4QBWdbtuOHaj97EBAaQPA/46
 +NLUp+Wubl90JoonoXocwAg88tvAUVSzsxPXj0lvypAiSI2AJKsmn+5PuQ+/IoQy
 lywRsxiQ5GD7C72SZ1yw2WI9DWFeAi+qa4b8n9fcLYrnHpyCY+zxEpu4pam8FJ7H
 JocEUZz5HRoKKOLHErzXDiuTkkm72b1glmCqAQvnB4kAlQMFEDPZ3gyDQNEqHgjY
 iQEBFfUEALu2C0uo+1Z7C5+xshWRYY5xNCzK20O6bANVJ+CO2fih96KhwsMof3lw
 fDso5HJSwgFd8WT/sR+Wwzz6BAE5UtgsQq5GcsdYQuGI1yIlCYUpDp5sgswNm+OA
 bX5a+r4F/ZJqrqT1J56Mer0VVsNfe5nIRsjd/rnFAFVfjcQtaQmjiQCVAwUQM9uV
 mcdm8Q+/vPRJAQELHgP9GqNiMpLQlZig17fDnCJ73P0e5t/hRLFehZDlmEI2TK7j
 Yeqbw078nZgyyuljZ7YsbstRIsWVCxobX5eH1kX+hIxuUqCAkCsWUY4abG89kHJr
 XGQn6X1CX7xbZ+b6b9jLK+bJKFcLSfyqR3M2eCyscSiZYkWKQ5l3FYvbUzkeb6K0
 IVNhdG9zaGkgQXNhbWkgPGFzYW1pQEZyZWVCU0QuT1JHPg==
 =39SC
 -----END PGP PUBLIC KEY BLOCK-----

  32.2.2. Jonathan M. Bresler

 Jonathan M. Bresler <jmb@FreeBSD.org>
 f16    Fingerprint16 = 31 57 41 56 06 C1 40 13  C5 1C E3 E5 DC 62 0E FB

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: PGPfreeware 5.0i for non-commercial use

 mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s
 o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB
 nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR
 tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQNbtI
 gAHbXdKX5jjdAQHamQP+OQr10QRknamIPmuHmFYJZ0jU9XPIvTTMuOiUYLcXlTdn
 GyTUuzhbEywgtOldW2V5iA8platXThtqC68NsnN/xQfHA5xmFXVbayNKn8H5stDY
 2s/4+CZ06mmJfqYmONF1RCbUk/M84rVT3Gn2tydsxFh4Pm32lf4WREZWRiLqmw+J
 AJUDBRA0DfF99RVb+45ULV0BAcZ0BACCydiSUG1VR0a5DBcHdtin2iZMPsJUPRqJ
 tWvP6VeI8OFpNWQ4LW6ETAvn35HxV2kCcQMyht1kMD+KEJz7r8Vb94TS7KtZnNvk
 2D1XUx8Locj6xel5c/Lnzlnnp7Bp1XbJj2u/NzCaZQ0eYBdP/k7RLYBYHQQln5x7
 BOuiRJNVU4kAlQMFEDQLcShVLh4uc9KIpQEBJv4D/3mDrD0MM9EYOVuyXik3UGVI
 8quYNA9ErVcLdt10NjYc16VI2HOnYVgPRag3Wt7W8wlXShpokfC/vCNt7f5JgRf8
 h2a1/MjQxtlD+4/Js8k7GLa53oLon6YQYk32IEKexoLPwIRO4L2BHWa3GzHJJSP2
 aTR/Ep90/pLdAOu/oJDUiQCVAwUQMqyL0LNaYutZnzI9AQF25QP9GFXhBrz2tiWz
 2+0gWbpcGNnyZbfsVjF6ojGDdmsjJMyWCGw49XR/vPKYIJY9EYo4t49GIajRkISQ
 NNiIz22fBAjT2uY9YlvnTJ9NJleMfHr4dybo7oEKYMWWijQzGjqf2m8wf9OaaofE
 KwBX6nxcRbKsxm/BVLKczGYl3XtjkcuJAJUDBRA1ol5TZWCprDT5+dUBATzXA/9h
 /ZUuhoRKTWViaistGJfWi26FB/Km5nDQBr/Erw3XksQCMwTLyEugg6dahQ1u9Y5E
 5tKPxbB69eF+7JXVHE/z3zizR6VL3sdRx74TPacPsdhZRjChEQc0htLLYAPkJrFP
 VAzAlSlm7qd+MXf8fJovQs6xPtZJXukQukPNlhqZ94kAPwMFEDSH/kF4tXKgazlt
 bxECfk4AoO+VaFVfguUkWX10pPSSfvPyPKqiAJ4xn8RSIe1ttmnqkkDMhLh00mKj
 lLQuSm9uYXRoYW4gTS4gQnJlc2xlciA8Sm9uYXRoYW4uQnJlc2xlckBVU2kubmV0
 PokAlQMFEDXbdSkB213Sl+Y43QEBV/4D/RLJNTrtAqJ1ATxXWv9g8Cr3/YF0GTmx
 5dIrJOpBup7eSSmiM/BL9Is4YMsoVbXCI/8TqA67TMICvq35PZU4wboQB8DqBAr+
 gQ8578M7Ekw1OAF6JXY6AF2P8k7hMcVBcVOACELPT/NyPNByG5QRDoNmlsokJaWU
 /2ls4QSBZZlb
 =zbCw
 -----END PGP PUBLIC KEY BLOCK-----

  32.2.3. Andrey A. Chernov

 Andrey A. Chernov <ache@FreeBSD.org>
        aka <ache@nagual.pp.ru>
 Key fingerprint = 33 03 9F 48 33 7B 4A 15  63 48 88 0A C4 97 FD 49

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3ia

 mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs
 Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD
 m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT
 tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iQCVAwUQM2Ez
 u+JgpPLZnQjrAQEyugP8DPnS8ixJ5OeuYgPFQf5sy6l+LrB6hyaS+lgsUPahWjNY
 cnaDmfda/q/BV5d4+y5rlQe/pjnYG7/yQuAR3jhlXz8XDrqlBOnW9AtYjDt5rMfJ
 aGFTGXAPGZ6k6zQZE0/YurT8ia3qjvuZm3Fw4NJrHRx7ETHRvVJDvxA6Ggsvmr20
 JEFuZHJleSBBLiBDaGVybm92IDxhY2hlQEZyZWVCU0Qub3JnPokAlQMFEDR5uVbi
 YKTy2Z0I6wEBLgED/2mn+hw4/3peLx0Sb9LNx//NfCCkVefSf2G9Qwhx6dvwbX7h
 mFca97h7BQN4GubU1Z5Ffs6TeamSBrotBYGmOCwvJ6S9WigF9YHQIQ3B4LEjskAt
 pcjU583y42zM11kkvEuQU2Gde61daIylJyOxsgpjSWpkxq50fgY2kLMfgl/ftCZB
 bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuaWV0enNjaGUubmV0PokAlQMFEDR5svDi
 YKTy2Z0I6wEBOTQD/0OTCAXIjuak363mjERvzSkVsNtIH9hA1l0w6Z95+iH0fHrW
 xXKT0vBZE0y0Em+S3cotLL0bMmVE3F3D3GyxhBVmgzjyx0NYNoiQjYdi+6g/PV30
 Cn4vOO6hBBpSyI6vY6qGNqcsawuRtHNvK/53MpOfKwSlICEBYQimcZhkci+EtCJB
 bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucnU+iQCVAwUQMcm5HeJgpPLZ
 nQjrAQHwvQP9GdmAf1gdcuayHEgNkc11macPH11cwWjYjzA2YoecFMGV7iqKK8QY
 rr1MjbGXf8DAG8Ubfm0QbI8Lj8iG3NgqIru0c72UuHGSn/APfGGG0AtPX5UK/k7B
 gI0Ca2po6NA5nrSp8tDsdEz/4gyea84RXl2prtTf5Jj07hflbRstGXK0MkFuZHJl
 eSBBLiBDaGVybm92LCBCbGFjayBNYWdlIDxhY2hlQGFzdHJhbC5tc2suc3U+iQCV
 AwUQMCsAo5/rGryoL8h3AQHq1QQAidyNFqA9hvrmMcjpY7csJVFlGvj574Wj4GPa
 o3pZeuQaMBmsWqaXLYnWU/Aldb6kTz6+nRcQX50zFH0THSPfApwEW7yybSTI5apJ
 mWT3qhKN2vmLNg2yNzhqLTzHLD1lH3i1pfQq8WevrNfjLUco5S/VuekTma/osnzC
 Cw7fQzCJAJUDBRAwKvwoa1pnjYGyp3kBARihBACoXr3qfG65hFCyKJISmjOvaoGr
 anxUIkeDS0yQdTHzhQ+dwB1OhhK15E0Nwr0MKajLMm90n6+Zdb5y/FIjpPriu8dI
 rlHrWZlewa88eEDM+Q/NxT1iYg+HaKDAE171jmLpSpCL0MiJtO0i36L3ekVD7Hv8
 vffOZHPSHirIzJOZTYkAlQMFEDAau6zFLUdtDb+QbQEBQX8D/AxwkYeFaYxZYMFO
 DHIvSk23hAsjCmUA2Uil1FeWAusb+o8xRfPDc7TnosrIifJqbF5+fcHCG5VSTGlh
 Bhd18YWUeabf/h9O2BsQX55yWRuB2x3diJ1xI/VVdG+rxlMCmE4ZR1Tl9x+Mtun9
 KqKVpB39VlkCBYQ3hlgNt/TJUY4riQCVAwUQMBHMmyJRltlmbQBRAQFQkwP/YC3a
 hs3ZMMoriOlt3ZxGNUUPTF7rIER3j+c7mqGG46dEnDB5sUrkzacpoLX5sj1tGR3b
 vz9a4vmk1Av3KFNNvrZZ3/BZFGpq3mCTiAC9zsyNYQ8L0AfGIUO5goCIjqwOTNQI
 AOpNsJ5S+nMAkQB4YmmNlI6GTb3D18zfhPZ6uciJAJUCBRAwD0sl4uW74fteFRkB
 AWsAA/9NYqBRBKbmltQDpyK4+jBAYjkXBJmARFXKJYTlnTgOHMpZqoVyW96xnaa5
 MzxEiu7ZWm5oL10QDIp1krkBP2KcmvfSMMHb5aGCCQc2/P8NlfXAuHtNGzYiI0UA
 Iwi8ih/S1liVfvnqF9uV3d3koE7VsQ9OA4Qo0ZL2ggW+/gEaYIkAlQMFEDAOz6qx
 /IyHe3rl4QEBIvYD/jIr8Xqo/2I5gncghSeFR01n0vELFIvaF4cHofGzyzBpYsfA
 +6pgFI1IM+LUF3kbUkAY/2uSf9U5ECcaMCTWCwVgJVO+oG075SHEM4buhrzutZiM
 1dTyTaepaPpTyRMUUx9ZMMYJs7sbqLId1eDwrJxUPhrBNvf/w2W2sYHSY8cdiQCV
 AwUQMAzqgHcdkq6JcsfBAQGTxwQAtgeLFi2rhSOdllpDXUwz+SS6bEjFTWgRsWFM
 y9QnOcqryw7LyuFmWein4jasjY033JsODfWQPiPVNA3UEnXVg9+n8AvNMPO8JkRv
 Cn1eNg0VaJy9J368uArio93agd2Yf/R5r+QEuPjIssVk8hdcy/luEhSiXWf6bLMV
 HEA0J+OJAJUDBRAwDUi+4mCk8tmdCOsBAatBBACHB+qtW880seRCDZLjl/bT1b14
 5po60U7u6a3PEBkY0NA72tWDQuRPF/Cn/0+VdFNxQUsgkrbwaJWOoi0KQsvlOm3R
 rsxKbn9uvEKLxExyKH3pxp76kvz/lEWwEeKvBK+84Pb1lzpG3W7u2XDfi3VQPTi3
 5SZMAHc6C0Ct/mjNlYkAlQMFEDAMrPD7wj+NsTMUOQEBJckD/ik4WsZzm2qOx9Fw
 erGq7Zwchc+Jq1YeN5PxpzqSf4AG7+7dFIn+oe6X2FcIzgbYY+IfmgJIHEVjDHH5
 +uAXyb6l4iKc89eQawO3t88pfHLJWbTzmnvgz2cMrxt94HRvgkHfvcpGEgbyldq6
 EB33OunazFcfZFRIcXk1sfyLDvYE
 =1ahV
 -----END PGP PUBLIC KEY BLOCK-----

  32.2.4. Jordan K. Hubbard

 Jordan K. Hubbard <jkh@FreeBSD.org>
 Fingerprint = 3C F2 27 7E 4A 6C 09 0A  4B C9 47 CD 4F 4D 0B 20

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3ia

 mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
 jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
 tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
 tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokBFQMFEDXCTXQM
 j46yp4IfPQEBwO8IAIN0J09AXBf86dFUTFGcAMrEQqOF5IL+KGorAjzuYxERhKfD
 ZV7jA+sCQqxkWfcVcE20kVyVYqzZIkio9a5zXP6TwA247JkPt54S1PmMDYHNlRIY
 laXlNoji+4q3HP2DfHqXRT2859rYpm/fG/v6pWkos5voPKcZ2OFEp9W+Ap88oqw+
 5rx4VetZNJq1Epmis4INj6XqNqj85+MOOIYE+f445ohDM6B/Mxazd6cHFGGIR+az
 VjZ6lCDMLjzhB5+FqfrDLYuMjqkMTR5z9DL+psUvPlCkYbQ11NEWtEmiIWjUcNJN
 GCxGzv5bXk0XPu3ADwbPkFE2usW1cSM7AQFiwuyJAJUDBRAxe+Q9a1pnjYGyp3kB
 AV7XA/oCSL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddB
 uJNiW/gznPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJ
 utrewH6PR2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4kAlQMFEDF8ldof
 f6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1w9sbfo4PV+/H
 U8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfaT/LMztfPA6PQ
 csyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJO1Bnj/paiQCV
 AwUQMXvlBvUVW/uOVC1dAQF2fQP/RfYC6RrpFTZHjo2qsUHSRk0vmsYfwG5NHP5y
 oQBMsaQJeSckN4n2JOgR4T75U4vS62aFxgPLJP3lOHkU2Vc7xhAuBvsbGr5RP8c5
 LvPOeUEyz6ZArp1KUHrtcM2iK1FBOmY4dOYphWyWMkDgYExabqlrAq7FKZftpq/C
 BiMRuaw=
 =C/Jw
 -----END PGP PUBLIC KEY BLOCK-----

  32.2.5. Poul-Henning Kamp

 Poul-Henning Kamp <phk@FreeBSD.org>
 Fingerprint = A3 F3 88 28 2F 9B 99 A2  49 F4 E2 FA 5A 78 8B 3E

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3ia

 mQCNAzAdpMIAAAEEALHDgrFUwhZtb7PbXg3upELoDVEUPFRwnmpJH1rRqyROUGcI
 ooVe7u+FQlIs5OsXK8ECs/5Wpe2UrZSzHvjwBYOND5H42YtI5UULZLRCo5bFfTVA
 K9Rpo5icfTsYihrzU2nmnycwFMk+jYXyT/ZDYWDP/BM9iLjj0x9/qQgDWPy9AAUR
 tCNQb3VsLUhlbm5pbmcgS2FtcCA8cGhrQEZyZWVCU0Qub3JnPokAlQMFEDQQ0aZ1
 u244dqP3sQEBu4ID/jXFFeJgs2MdTDNOZM/FbfDhI4qxAbYUsqS3+Ra16yd8Wd/A
 jV+IHJE2NomFWl8UrUjCGinXiwzPgK1OfFJrS9Og1wQLvAl0X84BA8MTP9BQr4w7
 6I/RbksgUSrVCIO8MJwlydjSPocWGBeXlVjbZxXzyuJk7H+TG+zuI5BuBcNIiQCV
 AwUQMwYr2rNaYutZnzI9AQHiIQP/XxtBWFXaBRgVLEhRNpS07YdU+LsZGlLOZehN
 9L4UnJFHQQPNOpMey2gF7Y95aBOw5/1xS5vlQpwmRFCntWsm/gqdzK6rulfr1r5A
 y94LO5TAC6ucNu396Y4vo1TyD1STnRC466KlvmtQtAtFGgXlORWLL9URLzcRFd1h
 D0yXd9aJAJUDBRAxfo19a1pnjYGyp3kBAQqyA/4v64vP3l1F0Sadn6ias761hkz/
 SMdTuLzILmofSCC4o4KWMjiWJHs2Soo41QlZi1+xMHzV32JKiwFlGtPHqL+EHyXy
 Q4H3vmf9/1KF+0XCaMtgI0wWUMziPSTJK8xXbRRmMDK/0F4TnVVaUhnmf+h5K7O6
 XdmejDTa0X/NWcicmIkAlQMFEDF8lef1FVv7jlQtXQEBcnwD/0ro1PpUtlkLmreD
 tsGTkNa7MFLegrYRvDDrHOwPZH152W2jPUncY+eArQJakeHiTDmJNpFagLZglhE0
 bqJyca+UwCXX+6upAclWHEBMg2byiWMMqyPVEEnpUoHM1sIkgdNWlfQAmipRBfYh
 2LyCgWvR8CbtwPYIFvUmGgB3MR87iQCVAwUQMUseXB9/qQgDWPy9AQGPkwP/WEDy
 El2Gkvua9COtMAifot2vTwuvWWpNopIEx0Ivey4aVbRLD90gGCJw8OGDEtqFPcNV
 8aIiy3fYVKXGZZjvCKd7zRfhNmQn0eLDcymq2OX3aPrMc2rRlkT4Jx425ukR1gsO
 qiQAgw91aWhY8dlw/EKzk8ojm52x4VgXaBACMjaJAJUDBRAxOUOg72G56RHVjtUB
 AbL4A/9HOn5Qa0lq9tKI/HkSdc5fGQD/66VdCBAb292RbB7CS/EM07MdbcqRRYIa
 0+0gwQ3OdsWPdCVgH5RIhp/WiC+UPkR1cY8N9Mg2kTwJfZZfNqN+BgWlgRMPN27C
 OhYNl8Q33Nl9CpBLrZWABF44jPeT0EvvTzP/5ZQ7T75EsYKYiYkAlQMFEDDmryQA
 8tkJ67sbQQEBPdsEALCj6v1OBuJLLJTlxmmrkqAZPVzt5QdeO3Eqa2tcPWcU0nqP
 vHYMzZcZ7oFg58NZsWrhSQQDIB5e+K65Q/h6dC7W/aDskZd64jxtEznX2kt0/MOr
 8OdsDis1K2f9KQftrAx81KmVwW4Tqtzl7NWTDXt44fMOtibCwVq8v2DFkTJy
 =JKbP
 -----END PGP PUBLIC KEY BLOCK-----

  32.2.6. Rich Murphey

 Rich Murphey <rich@FreeBSD.org>
 fingerprint = AF A0 60 C4 84 D6 0C 73  D1 EF C0 E9 9D 21 DB E4

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.2

 mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1
 FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs
 wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR
 tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W
 vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g
 Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP
 /2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw==
 =QoiM
 -----END PGP PUBLIC KEY BLOCK-----

  32.2.7. John Polstra

 John D. Polstra <jdp@polstra.com>
 Fingerprint = 54 3A 90 59 6B A4 9D 61  BF 1D 03 09 35 8D F6 0D

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.2

 mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/
 I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM
 dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR
 tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb
 +45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX
 O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk
 WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF
 EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq
 aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN
 C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm
 7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m
 SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU
 wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM
 V31K/PIoYsHAy5w=
 =cHFa
 -----END PGP PUBLIC KEY BLOCK-----

  32.2.8. Guido van Rooij

 Guido van Rooij <guido@gvr.win.tue.nl>
 Fingerprint = 16 79 09 F3 C0 E4 28 A7  32 62 FA F6 60 31 C0 ED

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.2

 mQCNAzGeO84AAAEEAKKAY91Na//DXwlUusr9GVESSlVwVP6DyH1wcZXhfN1fyZHq
 SwhMCEdHYoojQds+VqD1iiZQvv1RLByBgj622PDAPN4+Z49HjGs7YbZsUNuQqPPU
 wRPpP6ty69x1hPKq1sQIB5MS4radpCM+4wbZbhxv7l4rP3RWUbNaYutZnzI9AAUR
 tCZHdWlkbyB2YW4gUm9vaWogPGd1aWRvQGd2ci53aW4udHVlLm5sPokAlQMFEDMG
 Hcgff6kIA1j8vQEBbYgD/jm9xHuUuY+iXDkOzpCXBYACYEZDV913MjtyBAmaVqYo
 Rh5HFimkGXe+rCo78Aau0hc57fFMTsJqnuWEqVt3GRq28hSK1FOZ7ni9/XibHcmN
 rt2yugl3hYpClijo4nrDL1NxibbamkGW/vFGcljS0jqXz6NDVbGx5Oo7HBByxByz
 iQCVAwUQMhmtVjt/x7zOdmsfAQFuVQQApsVUTigT5YWjQA9Nd5Z0+a/oVtZpyw5Z
 OljLJP3vqJdMa6TidhfcatjHbFTve5x1dmjFgMX/MQTd8zf/+Xccy/PX4+lnKNpP
 eSf1Y4aK+E8KHmBGd6GzX6CIboyGYLS9e3kGnN06F2AQtaLyJFgQ71wRaGuyKmQG
 FwTn7jiKb1aJAJUDBRAyEOLXPt3iN6QQUSEBATwQA/9jqu0Nbk154+Pn+9mJX/YT
 fYR2UqK/5FKCqgL5Nt/Deg2re0zMD1f8F9Dj6vuAAxq8hnOkIHKlWolMjkRKkzJi
 mSPEWl3AuHJ31k948J8it4f8kq/o44usIA2KKVMlI63Q/rmNdfWCyiYQEVGcRbTm
 GTdZIHYCOgV5dOo4ebFqgYkAlQMFEDIE1nMEJn15jgpJ0QEBW6kEAKqN8XSgzTqf
 CrxFXT07MlHhfdbKUTNUoboxCGCLNW05vf1A8F5fdE5i14LiwkldWIzPxWD+Sa3L
 fNPCfCZTaCiyGcLyTzVfBHA18MBAOOX6JiTpdcm22jLGUWBf/aJK3yz/nfbWntd/
 LRHysIdVp29lP5BF+J9/Lzbb/9LxP1taiQCVAwUQMgRXZ44CzbsJWQz9AQFf7gP/
 Qa2FS5S6RYKG3rYanWADVe/ikFV2lxuM1azlWbsmljXvKVWGe6cV693nS5lGGAjx
 lbd2ADwXjlkNhv45HLWFm9PEveO9Jjr6tMuXVt8N2pxiX+1PLUN9CtphTIU7Yfjn
 s6ryZZfwGHSfIxNGi5ua2SoXhg0svaYnxHxXmOtH24iJAJUDBRAyAkpV8qaAEa3W
 TBkBARfQBAC+S3kbulEAN3SI7/A+A/dtl9DfZezT9C4SRBGsl2clQFMGIXmMQ/7v
 7lLXrKQ7U2zVbgNfU8smw5h2vBIL6f1PyexSmc3mz9JY4er8KeZpcf6H0rSkHl+i
 d7TF0GvuTdNPFO8hc9En+GG6QHOqbkB4NRZ6cwtfwUMhk2FHXBnjF4kAlQMFEDH5
 FFukUJAsCdPmTQEBe74EAMBsxDnbD9cuI5MfF/QeTNEG4BIVUZtAkDme4Eg7zvsP
 d3DeJKCGeNjiCWYrRTCGwaCWzMQk+/+MOmdkI6Oml+AIurJLoHceHS9jP1izdP7f
 N2jkdeJSBsixunbQWtUElSgOQQ4iF5kqwBhxtOfEP/L9QsoydRMR1yB6WPD75H7V
 iQCVAwUQMZ9YNGtaZ42Bsqd5AQH0PAQAhpVlAc3ZM/KOTywBSh8zWKVlSk3q/zGn
 k7hJmFThnlhH1723+WmXE8aAPJi+VXOWJUFQgwELJ6R8jSU2qvk2m1VWyYSqRKvc
 VRQMqT2wjss0GE1Ngg7tMrkRHT0il7E2xxIb8vMrIwmdkbTfYqBUhhGnsWPHZHq7
 MoA1/b+rK7CJAJUDBRAxnvXh3IDyptUyfLkBAYTDA/4mEKlIP/EUX2Zmxgrd/JQB
 hqcQlkTrBAaDOnOqe/4oewMKR7yaMpztYhJs97i03Vu3fgoLhDspE55ooEeHj0r4
 cOdiWfYDsjSFUYSPNVhW4OSruMA3c29ynMqNHD7hpr3rcCPUi7J2RncocOcCjjK2
 BQb/9IAUNeK4C9gPxMEZLokAlQMFEDGeO86zWmLrWZ8yPQEBEEID/2fPEUrSX3Yk
 j5TJPFZ9MNX0lEo7AHYjnJgEbNI4pYm6C3PnMlsYfCSQDHuXmRQHAOWSdwOLvCkN
 F8eDaF3M6u0urgeVJ+KVUnTz2+LZoZs12XSZKCte0HxjbvPpWMTTrYyimGezH79C
 mgDVjsHaYOx3EXF0nnDmtXurGioEmW1J
 =mSvM
 -----END PGP PUBLIC KEY BLOCK-----

  32.2.9. Peter Wemm

 Peter Wemm <peter@FreeBSD.org>
        aka <peter@spinner.dialix.com>
        aka <peter@haywire.dialix.com>
        aka <peter@perth.dialix.oz.au>
 Key fingerprint = 47 05 04 CA 4C EE F8 93  F6 DB 02 92 6D F5 58 8A

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3ia

 mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/
 W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2
 kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT
 tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT
 cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G
 9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN
 eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ
 AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI
 4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c
 YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet
 AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA
 lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8
 xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf
 /Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb
 /fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd
 SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g
 brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9
 4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql
 UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K
 hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23
 TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E
 kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z
 =gv+h
 -----END PGP PUBLIC KEY BLOCK-----

  32.2.10. Jo:rg Wunsch

 Type Bits/KeyID    Date       User ID
 pub  1024/76A3F7B1 1996/04/27 Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
             Key fingerprint = DC 47 E6 E4 FF A6 E9 8F  93 21 E0 7D F9 12 D6 4E
                               Joerg Wunsch <joerg_wunsch@interface-business.de>
                               Joerg Wunsch <j@uriah.heep.sax.de>
                               Joerg Wunsch <j@interface-business.de>

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3ia

 mQCNAzGCFeAAAAEEAKmRBU2Nvc7nZy1Ouid61HunA/5hF4O91cXm71/KPaT7dskz
 q5sFXvPJPpawwvqHPHfEbAK42ZaywyFp59L1GaYj87Pda+PlAYRJyY2DJl5/7JPe
 ziq+7B8MdvbX6D526sdmcR+jPXPbHznASjkx9DPmK+7TgFujyXW7bjh2o/exAAUR
 tC1Kb2VyZyBXdW5zY2ggPGpvZXJnX3d1bnNjaEB1cmlhaC5oZWVwLnNheC5kZT6J
 AJUDBRA0FFkBs1pi61mfMj0BAfDCA/oCfkjrhvRwRCpSL8klJ1YDoUJdmw+v4nJc
 pw3OpYXbwKOPLClsE7K3KCQscHel7auf91nrekAwbrXv9Clp0TegYeAQNjw5vZ9f
 L6UZ5l3fH8E2GGA7+kqgNWs1KxAnG5GdUvJ9viyrWm8dqWRGo+loDWlZ12L2OgAD
 fp7jVZTI1okAlQMFEDQPrLoff6kIA1j8vQEB2XQEAK/+SsQPCT/X4RB/PBbxUr28
 GpGJMn3AafAaA3plYw3nb4ONbqEw9tJtofAn4UeGraiWw8nHYR2DAzoAjR6OzuX3
 TtUV+57BIzrTPHcNkb6h8fPuHU+dFzR+LNoPaGJsFeov6w+Ug6qS9wa5FGDAgaRo
 LHSyBxcRVoCbOEaS5S5EiQCVAwUQM5BktWVgqaw0+fnVAQGKPwP+OiWho3Zm2GKp
 lEjiZ5zx3y8upzb+r1Qutb08jr2Ewja04hLg0fCrt6Ad3DoVqxe4POghIpmHM4O4
 tcW92THQil70CLzfCxtfUc6eDzoP3krD1/Gwpm2hGrmYA9b/ez9+r2vKBbnUhPmC
 glx5pf1IzHU9R2XyQz9Xu7FI2baOSZqJAJUDBRAyCIWZdbtuOHaj97EBAVMzA/41
 VIph36l+yO9WGKkEB+NYbYOz2W/kyi74kXLvLdTXcRYFaCSZORSsQKPGNMrPZUoL
 oAKxE25AoCgl5towqr/sCcu0A0MMvJddUvlQ2T+ylSpGmWchqoXCN7FdGyxrZ5zz
 xzLIvtcio6kaHd76XxyJpltCASupdD53nEtxnu8sRrQxSm9lcmcgV3Vuc2NoIDxq
 b2VyZ193dW5zY2hAaW50ZXJmYWNlLWJ1c2luZXNzLmRlPokAlQMFEDIIhfR1u244
 dqP3sQEBWoID/RhBm+qtW+hu2fqAj9d8CVgEKJugrxZIpXuCKFvO+bCgQtogt9EX
 +TJh4s8UUdcFkyEIu8CT2C3Rrr1grvckfxvrTgzSzvtYyv1072X3GkVY+SlUMBMA
 rdl1qNW23oT7Q558ajnsaL065XJ5m7HacgTTikiofYG8i1s7TrsEeq6PtCJKb2Vy
 ZyBXdW5zY2ggPGpAdXJpYWguaGVlcC5zYXguZGU+iQCVAwUQMaS91D4gHQUlG9CZ
 AQGYOwQAhPpiobK3d/fz+jWrbQgjkoO+j39glYGXb22+6iuEprFRs/ufKYtjljNT
 NK3B4DWSkyIPawcuO4Lotijp6jke2bsjFSSashGWcsJlpnwsv7EeFItT3oWTTTQQ
 ItPbtNyLW6M6xB+jLGtaAvJqfOlzgO9BLfHuA2LY+WvbVW447SWJAJUDBRAxqWRs
 dbtuOHaj97EBAXDBA/49rzZB5akkTSbt/gNd38OJgC+H8N5da25vV9dD3KoAvXfW
 fw7OxIsxvQ/Ab+rJmukrrWxPdsC+1WU1+1rGa4PvJp/VJRDes2awGrn+iO7/cQoS
 IVziC27JpcbvjLvLVcBIiy1yT/RvJ+87a3jPRHt3VFGcpFh4KykxxSNiyGygl4kA
 lQMFEDGCUB31FVv7jlQtXQEB5KgD/iIJZe5lFkPr2B/Cr7BKMVBot1/JSu05NsHg
 JZ3uK15w4mVtNPZcFi/dKbn+qRM6LKDFe/GF0HZD/ZD1FJt8yQjzF2w340B+F2GG
 EOwnClqZDtEAqnIBzM/ECQQqH+6Bi8gpkFZrFgg5eON7ikqmusDnOlYStM/CBfgp
 SbR8kDmFtCZKb2VyZyBXdW5zY2ggPGpAaW50ZXJmYWNlLWJ1c2luZXNzLmRlPokA
 lQMFEDHioSdlYKmsNPn51QEByz8D/10uMrwP7MdaXnptd1XNFhpaAPYTVAOcaKlY
 OGI/LLR9PiU3FbqXO+7INhaxFjBxa0Tw/p4au5Lq1+Mx81edHniJZNS8tz3I3goi
 jIC3+jn2gnVAWnK5UZUTUVUn/JLVk/oSaIJNIMMDaw4J9xPVVkb+Fh1A+XqtPsVa
 YESrNp0+iQCVAwUQMwXkzcdm8Q+/vPRJAQEA4QQAgNNX1HFgXrMetDb+w6yEGQDk
 JCDAY9b6mA2HNeKLQAhsoZl4HwA1+iuQaCgo3lyFC+1Sf097OUTs74z5X1vCedqV
 oFw9CxI3xuctt3pJCbbN68flOlnq0WdYouWWGlFwLlh5PEy//VtwX9lqgsizlhzi
 t+fX6BT4BgKi5baDhrWJAJUDBRAyCKveD9eCJxX4hUkBAebMA/9mRPy6K6i7TX2R
 jUKSl2p5oYrXPk12Zsw4ijuktslxzQhOCyMSCGK2UEC4UM9MXp1H1JZQxN/DcfnM
 7VaUt+Ve0wZ6DC9gBSHJ1hKVxHe5XTj26mIr4rcXNy2XEDMK9QsnBxIAZnBVTjSO
 LdhqqSMp3ULLOpBlRL2RYrqi27IXr4kAlQMFEDGpbnd1u244dqP3sQEBJnQD/RVS
 Azgf4uorv3fpbosI0LE3LUufAYGBSJNJnskeKyudZkNkI5zGGDwVneH/cSkKT4OR
 ooeqcTBxKeMaMuXPVl30QahgNwWjfuTvl5OZ8orsQGGWIn5FhqYXsKkjEGxIOBOf
 vvlVQ0UbcR0N2+5F6Mb5GqrXZpIesn7jFJpkQKPU
 =97h7
 -----END PGP PUBLIC KEY BLOCK-----

Indice

  Simbolos

   .k5login, Ficheros de configuracion de usuario: .k5login y .k5users

   .k5users, Ficheros de configuracion de usuario: .k5login y .k5users

   .rhosts, Dump y Restore

   /boot/kernel.old, Compilacion e instalacion de un kernel personalizado

   /etc/gettytab, /etc/gettytab

   /etc/group, Grupos

   /etc/login.conf, Limitar a los usuarios

   /etc/mail/access, Configuracion de sendmail

   /etc/mail/aliases, Configuracion de sendmail

   /etc/mail/local-host-names, Configuracion de sendmail

   /etc/mail/mailer.conf, Configuracion de sendmail

   /etc/mail/mailertable, Configuracion de sendmail

   /etc/mail/sendmail.cf, Configuracion de sendmail

   /etc/mail/virtusertable, Configuracion de sendmail

   /etc/remote, ?Como se espera que yo entre estos comandos AT?

   /etc/ttys, /etc/ttys

   /usr/bin/login, Revision rapida

   /usr/share/skel, adduser

   10 base 2, "bridges/routers" RDSI "Stand-alone"

   10 base T, "bridges/routers" RDSI "Stand-alone"

   386BSD, Breve historia de FreeBSD, En que consiste el FreeBSD que
   distribuimos

   386BSD Patchkit, Breve historia de FreeBSD

   4.3BSD-Lite, Breve historia de FreeBSD

   4.4BSD-Lite, Bienvenido a FreeBSD, ?Que puede hacer FreeBSD?

   802.11 (ver Redes sin cables)

  A

   Abacus, Abacus

   AbiWord, AbiWord

   ACL, Listas de control de acceso a sistemas de ficheros

   Acrobat Reader, Acrobat Reader(R)

   address redirection, Redireccion de direcciones

   adduser, adduser, Configuracion a nivel de administrador

   Advertencias de seguridad en FreeBSD, FreeBSD Security Advisories

   Agentes de Correo de Usuario, Agente de Correo de Usuario

   AIX, ?Que es esto?

   Alpha, FreeBSD/alpha, Estructura de discos en Alpha, Arranque en Alpha, El
   arranque de FreeBSD/alpha

   Alpha BIOS, FreeBSD/alpha

   Amanda, Amanda

   amd, Anclajes automaticos usando amd

   anti-aliased fonts, Tipos Anti-Aliasing

   Apache, ?Quien usa FreeBSD?

   apagado, Secuencia de apagado

   aplicaciones

                Maple, Instalacion de Maple(TM)

                Mathematica, Instalacion de Mathematica(R)

                MATLAB, Instalacion de MATLAB(R)

                Oracle, Instalacion de Oracle(R)

                SAP R/3, Instalacion de SAP(R) R/3(R)

   APM, El fichero de configuracion

   ARC, FreeBSD/alpha

   ASCII, Codificaciones

   AT&T, Breve historia de FreeBSD

   Ataques de denegacion de servicio (DoS), Ataques de denegacion de servicio

   Ataques DoS (ver Denegacion de servicio (DoS))

   AUDIT, *

   Auditoria de eventos de seguridad (ver MAC)

   automatic mounter daemon, Anclajes automaticos usando amd

   AutoPPP, mgetty y AutoPPP

  B

   backup software

                dump / restore, Dump y Restore

   BGP, Construccion de un "route"

   bibliotecas compartidas, Como instalar bibliotecas compartidas adicionales

   binary compatibility

                BSD/OS, ?Que puede hacer FreeBSD?

                Linux, ?Que puede hacer FreeBSD?

                NetBSD, ?Que puede hacer FreeBSD?

                SCO, ?Que puede hacer FreeBSD?

                SVR4, ?Que puede hacer FreeBSD?

   BIND, Depuracion de Problemas, Resumen

                caching name server, Servidor de nombres de cache

                configuration files, Ficheros de configuracion

                running in a sandbox, Ejecucion de named en una " Sandbox"

                starting, Ejecucion de BIND

   BIOS, Numeracion de unidades desde el punto de vista de la BIOS

                Sistema Basico de Entrada/Salida, El problema que representa
                arrancar el sistema

   bits-por-second, Terminologia

   Blue Mountain Arts, ?Quien usa FreeBSD?

   Bluetooth, Bluetooth

   BOOTP

                diskless operation, Configuracion utilizando BOOTP

   bridge, Introduccion

   BSD Copyright, Objetivos del Proyecto FreeBSD

  C

   cajas de arena sandboxes, Asegurar servidores que se ejecutan como root y
   binarios SUID/SGID

   cargador, Flujo del programa cargador

   cargador de clase en ejecucion, ?Como funciona?

   cargador-de-arranque (boot-loader), Etapa tres, /boot/loader (cargador de
   arranque)

   CDROM

                creacion, Creacion y uso de medios opticos (CD)

                grabar, burncd

   CDROMs

                creacion cd CD arrancables, mkisofs

                grabar, cdrecord

   CHAP, Aclaraciones, PPP y direcciones de IP estaticas (fijas),
   Autentificacion por medio de PAP y CHAP

   Chino tradicional

                codificacion BIG-5, Configuracion a nivel de usuario

   chpass, chpass

   chroot, Ejecucion de named en una " Sandbox"

   Cisco, Uso de pppd como Cliente

   clase de sesion, Configuracion a nivel de administrador

   clases de sesion, Metodos de configuracion de las " locales"

   Coda, Sistemas de ficheros en red, memoria y respaldados en fichero

   codificaciones, Codificaciones

   codigos de idioma, Codigos de idioma y pais

   codigos de pais, Codigos de idioma y pais

   Colaboradores, El modelo de desarrollo de FreeBSD

   coleccion de ports, Instalacion usando el port linux_base

   committers, El modelo de desarrollo de FreeBSD

   compatibilidad binaria

                Linux, Sinopsis

   compatibilidad binaria con Linux, Sinopsis

   compilers

                C, ?Que puede hacer FreeBSD?

                C++, ?Que puede hacer FreeBSD?

                Fortran, ?Que puede hacer FreeBSD?

   compresion, ?Puedo comprimir mis respaldos?

   Computer Systems Research Group (CSRG), ?Que puede hacer FreeBSD?, En que
   consiste el FreeBSD que distribuimos

   comsat, Asegurar servidores que se ejecutan como root y binarios SUID/SGID

   concatenacion de discos, Cuellos de Botella en el Acceso

   Concurrent Versions System (ver CVS)

   configuracion del cargador, Flujo del programa cargador

   consola, La consola, Modo monousuario

   consola virtual, Consolas virtuales y terminales

   contabilidad

                espacio en disco, Cuotas en sistemas de ficheros

   Contabilidad de procesos, Contabilidad de procesos

   Contrasenas de un solo uso, Contrasenas de un solo uso

   core team, El modelo de desarrollo de FreeBSD

   coredumpsize, Limitar a los usuarios

   correo

                recepcion, Recepcion de correo

   correo electonico, Sinopsis

   cortafuegos, Cortafuegos

   cpio, cpio

   cputime, Limitar a los usuarios

   crypt, DES, MD5 y Crypt

   cu, Instalacion de FreeBSD en un sistema sin monitor o teclado

   cuaa, Configuracion de puerto serie

   cuentas

                anadir, adduser

                cambiar contrasena, passwd

                daemon, Cuentas de sistema

                eliminar, rmuser

                grupos, Grupos

                limitar, Limitar a los usuarios

                modificar, Modificacion de cuentas

                nobody, Cuentas de sistema

                operator, Cuentas de sistema

                sistema, Cuentas de sistema

                superusuario (root), La cuenta superusuario

                usuario, Cuentas de usuario

   cuotas, Limitar a los usuarios

   cuotas de disco, Limitar a los usuarios, Cuotas en sistemas de ficheros

                limites, Configuracion de limites de cuota

                revisando, Revision de los limites de cuota y uso de disco

                revision, Configuracion del sistema para habilitar cuotas de
                disco

   CVS

                repository, El modelo de desarrollo de FreeBSD

  D

   DCE, Terminologia

   default route, Cosas Que Tiene Que Hacer Solo Una Vez, Ejemplo, Rutas por
   defecto

   Denegacion de servicio (DoS), Introduccion

   DES, DES, MD5 y Crypt

   device nodes, Problemas habituales

   device.hints, Device Hints

   DGA, Como determinar las caracteristicas de video

   DHCP

                configuration files, Ficheros, Ficheros

                dhcpd.conf, Configuracion del servidor de DHCP

                diskless operation, Configuracion utilizando ISC DHCP

                installation, Instalacion del servidor DHCP

                requirements, Integracion dentro de los sistemas FreeBSD

                server, Integracion dentro de los sistemas FreeBSD

   dial-in service, Servicio dial-in

   dial-out service, Servicio dial-out

   Direccion IP estatica, Aclaraciones

   direcciones estaticas, Direcciones de Enrutamiento Estaticas

   directorio esqueleto, adduser

   directorios, Permisos

   discos

                anadir, Anadir discos

                cifrado, Cifrado de particiones de disco

                desconectar un disco de memoria, Desconexion del sistema de
                un disco de memoria

                file-backed (4.X), Sistema de ficheros basado en fichero en
                FreeBSD 4.X

                file-backed (5.X), Sistemas de ficheros basados en fichero en
                FreeBSD 5.X

                memoria, Sistemas de ficheros en red, memoria y respaldados
                en fichero

                sistemas de ficheros en memoria (4.X), Sistemas de ficheros
                basados en memoria en FreeBSD 4.X

                sistemas de ficheros en memoria (5.X), sistemas de ficheros
                basados en memoria en FreeBSD 5.X

                virtuales, Sistemas de ficheros en red, memoria y respaldados
                en fichero

   discos flexibles, ?Puedo utilizar disquetes para respaldar mis datos?

   discos virtuales, Sistemas de ficheros en red, memoria y respaldados en
   fichero

   Disk Mirroring, RAID1 - Replicacion

   disklabel, Antes del desastre, Despues del desastre

   diskless operation, Ejecucion sin disco duro

                /usr read-only, Ejecucion con un /usr de solo lectura

                kernel configuration, Construccion de un kernel sin disco

   diskless workstation, Ejecucion sin disco duro

   DNS, Extensiones de MS, Utilizacion del correo electronico, Correo para
   Nuestro Dominio, Resumen

                records, Ficheros de zona

   DNS Server, ?Que puede hacer FreeBSD?

   domain (nombre de dominio), Cosas Que Tiene Que Hacer Solo Una Vez

   DOS, Preparacion del medio de arranque, Numeracion de unidades desde el
   punto de vista de la BIOS, El nucleo y los sistemas de ficheros

   DSL, Cortafuegos de filtrado/conformacion de trafico

   DSP, Problemas habituales

   DTE, Terminologia

   dual homed hosts, Maquinas con doble pertenencia (Dual Homed Hosts)

   dump, Dump y Restore

   DVD

                DVD+RW, Uso de un DVD+RW

                DVD-RW, Uso de un DVD-RW

                DVD-Video, Grabacion de un DVD de video

                grabar, Crear y utilizar medios opticos (DVDs)

   Dynamic Host Configuration Protocol (ver DHCP)

  E

   editores, Editores de texto

   editores de texto, Editores de texto

   editors

                ee, Editores de texto

                emacs, Editores de texto

                vi, Editores de texto

   ee, Editores de texto

   electronic mail (ver email)

   ELF, ?Como funciona?

                marcado, ?Como funciona?

   emacs, Editores de texto

   email, Sinopsis

                cambio de mta, Sustitucion del Agente de Transferencia de
                Correo

                configuration, Configuracion Basica

                Depuracion de problemas, Depuracion de Problemas

   enlaces simbolicos, Como instalar bibliotecas compartidas adicionales

   Etherboot, Preparacion de un programa de arranque con Etherboot

   Ethernet, Configuracio de slip.hosts

                direccion MAC, slip.login Configuracion

                MAC address, Como obtener una contrasena de Mathematica(R),
                Ejemplo

  F

   fdisk, Anadir discos

   ficheros rc, Configuracion-Fuente(rc)

   filesize, Limitar a los usuarios

   finger, Asegurar servidores que se ejecutan como root y binarios SUID/SGID

   Firefox, Firefox

   firewall, ?Que puede hacer FreeBSD?, Cortafuegos de filtrado/conformacion
   de trafico , Soporte de cortafuegos

   fix-it floppies, Antes del desastre

   fonts, Ejecucion del <<frontend>> de Mathematica(R) traves de una red

                anti-aliased, Tipos Anti-Aliasing

                spacing, Tipos Anti-Aliasing

                TrueType, Tipos TrueType(R)

   Fonts

                LCD screen, Tipos Anti-Aliasing

   Free Software Foundation, Breve historia de FreeBSD, En que consiste el
   FreeBSD que distribuimos, Ficheros de informacion GNU: info

   FreeBSD Project

                development model, El modelo de desarrollo de FreeBSD

                goals, Objetivos del Proyecto FreeBSD

                history, Breve historia de FreeBSD

   FreshMeat, Como encontrar aplicaciones

   FreshPorts, Como encontrar aplicaciones

   FTP

                anonymous, FTP anonimo, Configuracion de servicios de red

                modo pasivo, Eleccion del medio de instalacion

                via a HTTP proxy, Eleccion del medio de instalacion

   FTP servers, ?Que puede hacer FreeBSD?

  G

   gated, Configuracio de slip.hosts, Ejecutando gated

   gateway, Pasarelas y "routers"

   GEOM, Sinopsis, RAID0 - Distribucion por bandas, RAID1 - Replicacion

   GEOM Disk Framework (ver GEOM)

   getty, Revision rapida

   GNOME, Acerca de GNOME

                anti-aliased fonts, Tipos <<Anti-aliased>> en GNOME

   GNU Compiler Collection, ?Que puede hacer FreeBSD?

   GNU General Public License (GPL), Objetivos del Proyecto FreeBSD

   GNU Lesser General Public License (LGPL), Objetivos del Proyecto FreeBSD

   GNU toolchain, Instalar binarios ELF Linux

   GnuCash, GnuCash

   Gnumeric, Gnumeric

   GQview, GQview

   grabadora de CD

                ATAPI, Introduccion

                controlador ATAPI/CAM, Introduccion

   Grabadora de CD

                controlador ATAPI/CAM, Uso del controlador ATAPI/CAM

   Greenman, David, Breve historia de FreeBSD

   Grimes, Rod, Breve historia de FreeBSD

   grupos, Grupos

   gv, gv

   gzip, ?Puedo comprimir mis respaldos?

  H

   HCI, Interfaz de la controladora de la maquina (HCI)

   horizontal scan rate, Antes de empezar

   hostname, Configuracion de la Resolucion de Nombres

   hosts, Configuracion de la Resolucion de Nombres

   HP-UX, ?Que es esto?

   Hubbard, Jordan, Breve historia de FreeBSD

  I

   I/O port, Problemas habituales

   ICMP_BANDLIM, Ataques de denegacion de servicio

   IEEE, pax

   ifconfig, ifconfig

   IKE, Paso 2: Asegurar el enlace

   image scanners, Escaneres de imagenes

   IMAP, Utilizacion del correo electronico, Acceso a carpetas de correo
   remotas mediante POP e IMAP

   impresoras, Configuracion de la impresora

   imprimir, Sinopsis

   inicio, Sinopsis

   init, El problema que representa arrancar el sistema, Init: inicializacion
   del proceso de control

   instalacion, Sinopsis

   installation

                floppies, Creacion de disquetes de instalacion

                from MS-DOS, Instalacion desde una particion MS-DOS(R)

                from QIC/SCSI Tape, Creacion de una cinta de instalacion

                headless (serial console), Instalacion de FreeBSD en un
                sistema sin monitor o teclado

                network

                             Ethernet, Before Installing over a Network

                             FTP, Eleccion del medio de instalacion, Creacion
                             de un sitio FTP local a partir de un disco de
                             instalacion de FreeBSD

                             NFS, Antes de instalar via NFS

                             parallel (PLIP), Before Installing over a
                             Network

                             serial (SLIP or PPP), Before Installing over a
                             Network

                troubleshooting, Solucion de problemas

   Intel i810 graphic chipset, Configuracion de chipsets graficos Intel(R)
   i810

   internacionalizacion (ver localizacion)

   Internet connection sharing, Overview

   Internet Software Consortium (ISC), ?Que es DHCP?

   IP masquerading, ?Que puede hacer FreeBSD?, Overview

   IP subnet, Introduccion

   IPCP, PPP y direcciones de IP Dinamicas (Variables)

   IPsec, VPN sobre IPsec

                AH, Que es IPsec

                ESP, Que es IPsec

                politicas de seguridad, Paso 2: Asegurar el enlace

   IPX/SPX, "bridges/routers" RDSI "Stand-alone"

   IRQ, Problemas habituales

   ISA, Configuracion del sistema

   ISDN, Cortafuegos de filtrado/conformacion de trafico

                cards, Tarjetas RDSI

                stand-alone bridges/routers, "bridges/routers" RDSI
                "Stand-alone"

   ISO 9660, Introduccion

   ISP, Aclaraciones, PPP y direcciones de IP estaticas (fijas)

  J

   jails, Jaulas

   jerarquia de directorios, Estructura de directorios

   JMA Wired, ?Quien usa FreeBSD?

   Jolitz, Bill, Breve historia de FreeBSD

  K

   KDE, KDE

                display manager, El gestor de pantalla de KDE

   Kerberos5

                Centro de distribucion de llaves, Configuracion de un KDC
                Heimdal

                configurar clientes, Kerberos con un cliente Heimdal

                habilitacion de servicios, Creacion de un servidor Kerberos
                con servicios Heimdal

                historia, Historia

                limitaciones y deficiencias, Mitigacion de limitaciones
                encontradas en Kerberos

                recursos externos, Recursos y mas informacion

                solucion de problemas, Kerberos Sugerencias, trucos y
                solucion de problemas

   KerberosIV, Asegurar la cuenta root y las cuentas administrativas, Otros
   aspectos del acceso con Kerberos y SSH

                encendido inicial, Puesta en marcha del sistema

                instalacion, Instalacion de KerberosIV

   kermit, Uso de pppd como Cliente

   kernel, El problema que representa arrancar el sistema

                compilacion / instalacion, Compilacion e instalacion de un
                kernel personalizado

                Compilar un kernel a medida, Sinopsis

                configuracion, Configuracion del Kernel

                configuration, Configuracion del sistema , Configuracion

                configuration file, El fichero de configuracion

                drivers / modules / subsystems, Controladores del kernel,
                subsistemas y modulos

                interaccion de arranque, Interaccion con el kernel durante el
                arranque

                NOTES, El fichero de configuracion

                opciones de arranque, Opciones de arranque del kernel

   kernel options

                cpu, El fichero de configuracion

                ident, El fichero de configuracion

                LINUX, Instalacion

                machine, El fichero de configuracion

                MSDOSFS, El fichero de configuracion

                NFS, El fichero de configuracion

                NFS_ROOT, El fichero de configuracion

                options BRIDGE, Cambios en la configuracion del nucleo

                SMP, El fichero de configuracion

   kernel.old, Ejemplos de uso del cargador

   KLD (objeto cargable del kernel), Instalacion

   KOffice, KOffice

   Konqueror, Konqueror

  L

   L2CAP, Protocolo de adaptacion y de control de enlace a nivel logico
   (L2CAP)

   LCD screen, Tipos Anti-Aliasing

   LCP, mgetty y AutoPPP

   limitar a los usuarios, Limitar a los usuarios

                coredumpsize, Limitar a los usuarios

                cputime, Limitar a los usuarios

                cuotas, Limitar a los usuarios

                filesize, Limitar a los usuarios

                maxproc, Limitar a los usuarios

                memorylocked, Limitar a los usuarios

                memoryuse, Limitar a los usuarios

                openfiles, Limitar a los usuarios

                sbsize, Limitar a los usuarios

                stacksize, Limitar a los usuarios

   limite duro, Configuracion de limites de cuota

   limite suave, Configuracion de limites de cuota

   linea de ordenes, Shells

   Linux, ?Que es esto?

                binarios ELF, Instalar binarios ELF Linux

                instalacion de bibliotecas Linux, Instalacion de bibliotecas
                de ejecucion Linux

   LISA, ?Cual es el mejor programa de respaldos?

   locale, Uso de la localizacion, Metodo de los ficheros de inicio de los
   interpretes de ordenes

   locales, Locales necesarios, Metodos de configuracion de las " locales"

   localizacion, ?Que es I18N/L10N?

                Aleman, Localizacion al idioma aleman (para todos los idiomas
                ISO 8859-1)

                Chino tradicional, Localizacion al chino tradicional para
                Taiwan

                Coreano, Localizacion a los idiomas japones y coreano

                Japones, Localizacion a los idiomas japones y coreano

                Ruso, Idioma ruso (codificacion KOI8-R)

   login name, Aclaraciones

   loopback device, Ejemplo

   ls, Permisos

  M

   MAC, Sinopsis

   MacOS, Generacion una sola contrasena de un solo uso

   MAKEDEV, Configuracion de puerto serie

   Mandatory Access Control (ver MAC)

   mapa de pantalla, Configuracion de la consola

   mapa de teclado, Configuracion de la consola

   maxproc, Limitar a los usuarios

   MD5, DES, MD5 y Crypt

   mecanismo de arranque (bootstrap), Sinopsis

   medios de cinta, Creacion y uso de cintas de datos

                AIT, AIT

                cintas DDS (4mm), 4mm (DDS: Digital Data Storage)

                cintas Exabyte (8mm), 8mm (Exabyte)

                cintas QIC, 4mm (DDS: Digital Data Storage)

                DLT, DLT

                QIC-150, QIC

   memory protection, ?Que puede hacer FreeBSD?

   memorylocked, Limitar a los usuarios

   memoryuse, Limitar a los usuarios

   mencoder, mencoder

   Metodo de introduccion X11 (XIM), Introduccion de caracteres no ingleses

   mgetty, mgetty y AutoPPP

   MiContrasena, Autentificacion por medio de PAP y CHAP

   Microsoft Windows, Numeracion de unidades desde el punto de vista de la
   BIOS

   MIME, Configuracion de las "locales" , Metodo de los ficheros de inicio de
   los interpretes de ordenes

   MIT, Instalacion de KerberosIV

   modem, Modems y cables, Uso de pppd como Cliente, Adaptadores de terminal
   RDSI

   modem, Prerequisitos

   modo de arranque mono-usuario, Ejemplos de uso del cargador

   modo mono-usuario, Modo monousuario

   modo multi-usuario, Modo multiusuario

   mount, Instalacion de FreeBSD en un sistema sin monitor o teclado, Despues
   del desastre

   mountd, Como funciona NFS

   moused, Configuracion de la consola

   Mozilla, Tipos Anti-Aliasing, Mozilla

   MPlayer

                making, Compilacion de MPlayer

                use, Uso de MPlayer

   MS-DOS, Generacion una sola contrasena de un solo uso

   multi-user facilities, ?Que puede hacer FreeBSD?

   multicast

                options MROUTING, Rutas multicast

   MX record, Depuracion de Problemas, Configuracion Basica, Ficheros de zona

   MySQL, Compilacion de programas con soporte para I18N

  N

   nameserver, Cosas Que Tiene Que Hacer Solo Una Vez

   natd, Overview

   Net/2, Breve historia de FreeBSD

   NetBIOS, Extensiones de MS

   NetBSD, En que consiste el FreeBSD que distribuimos, ?Que es esto?

   Netcraft, ?Quien usa FreeBSD?

   netgroups, Uso de Netgroups

   network address translation, Cortafuegos de filtrado/conformacion de
   trafico

   newfs, Despues del desastre

   NFS, Sistemas de ficheros en red, memoria y respaldados en fichero, Cuotas
   en NFS, NFS

                configuration, Configuracion de NFS

                diskless operation, Configuracion de servidores de TFTP y de
                NFS

                export examples, Configuracion de NFS

                mounting, Configuracion de NFS

                server, Como funciona NFS

                uses, Usos practicos

   nfsd, Como funciona NFS

   NIS, ?Que es esto?

                client, Clases de maquinas

                client configuration, Configuracion de un cliente NIS

                domainname, Eleccion del nombre de dominio NIS

                domains, ?Que es esto?

                maps, Inicializacion de los mapeos de NIS

                master server, Clases de maquinas

                password formats, Formatos de contrasenas

                server configuration, Configuracion de un servidor de NIS
                maestro

                slave server, Clases de maquinas, Configuracion de un
                servidor NIS esclavo

   NOTES, El fichero de configuracion

   Novell, Breve historia de FreeBSD

   ntalk, Asegurar servidores que se ejecutan como root y binarios SUID/SGID

   NTP, NTP

                choosing servers, Eleccion de los servidores de hora
                adecuados

                configuration, Configuracion de la maquina

                ntp.conf, Configuracion general

                ntpd, Resumen

   ntpdate, Configuracion basica

   null modem cable, Instalacion de FreeBSD en un sistema sin monitor o
   teclado

   null-modem cable, Cables null-modem, Configuracion de la consola serie

  O

   OBEX, Perfil OBEX Object Push (OPUSH)

   office suite

                KOffice, KOffice

                OpenOffice.org, OpenOffice.org

   opciones de kernel

                FAST_IPSEC, Que es IPsec

                IPSEC, Que es IPsec, Paso 2: Asegurar el enlace

                IPSEC_DEBUG, Que es IPsec

                IPSEC_ESP, Que es IPsec

   OpenBSD, En que consiste el FreeBSD que distribuimos, ?Que es esto?

   openfiles, Limitar a los usuarios

   OpenOffice.org, OpenOffice.org

   OpenSSH, OpenSSH

                cliente, Cliente SSH

                configuracion, Configuracion

                copia segura, Copia segura

                habilitar, Habilitar sshd

                tuneles, Tuneles SSH

   OpenSSL

                generacion de certificados, Generacion de certificados

   Opera, Opera

   OS/2, Dedicado

   OSPF, Construccion de un "route"

  P

   packages, Sinopsis

                deleting, Eliminar un package

                installing, Instalar un package

   paginas de manual, Paginas de manual

   Pair Networks, ?Quien usa FreeBSD?

   pairing, Enparejamiento de dispositivos

   PAP, Aclaraciones, PPP y direcciones de IP estaticas (fijas),
   Autentificacion por medio de PAP y CHAP

   Parallel Line IP, Linea IP paralela (PLIP)

   particion raiz, Despues del desastre

   particiones, Organizacion de disco, Anadir discos

   particiones BSD, Uso de sysinstall(8)

   passwd, passwd

   password, Aclaraciones

   pax, pax

   PCI, Configuracion del sistema

   PDF

                viewing, Acrobat Reader(R), gv, Xpdf

   peligrosamente dedicadas, Organizacion de disco

   periodo de gracia, Revision de los limites de cuota y uso de disco

   permisos, Permisos

                symbolic, Permisos simbolicos

   permisos de fichero, Permisos

   personalizacion del kernel, Personalizacion del kernel

   Personalizacion del kernel, Personalizacion del kernel

   Physical Address Extensions (PAE)

                large memory, Configuraciones con grandes cantidades de
                memoria (PAE)

   pkg_add, Instalar un package

   pkg_delete, Eliminar un package

   PLIP, Linea IP paralela (PLIP)

   POP, Utilizacion del correo electronico, Acceso a carpetas de correo
   remotas mediante POP e IMAP

   Portaudit, Monitorizacion de fallos de seguridad de aplicaciones

   portmanager, Actualizacion de ports con portmanager

   portmap, Como funciona NFS, Terminos/procesos que debe usted conocer

   portmaster, Actualizacion de ports con portmaster

   ports, Sinopsis

                disk-space, Los ports y el espacio en disco

                installing, Instalacion de ports

                removing, Como desinstalar ports

                upgrading, Actualizacion de ports

   portupgrade, Actualizacion de ports con portupgrade

   POSIX, pax, Configuracion de las "locales"

   PostScript

                viewing, gv

   PPP, Sinopsis, Aclaraciones, Depuracion de Problemas, Adaptadores de
   terminal RDSI

                cliente, Uso de pppd como Cliente

                con direccion IP fija, PPP y direcciones de IP estaticas
                (fijas)

                con direcciones IP dinamica, PPP y direcciones de IP
                Dinamicas (Variables)

                configuracion, Configuracion Automatica de PPP, Configuracion
                Final del Sistema

                Extensiones Microsoft, Extensiones de MS

                kernel PPP, Configurando Kernel PPP

                recibiendo llamdas externas, Recibiendo Llamadas Externas

                servidor, Configurando Kernel PPP

                sobre ATM, Uso de PPP sobre ATM (PPPoA)

                sobre Ethernet, Uso de PPP sobre Ethernet (PPPoE)

                user PPP, PPP y direcciones de IP estaticas (fijas)

   PPP shells, Shells de PPP para Usuarios de IP Dinamica, Shells de PPP para
   Usuarios de IP Estatica

   PPPoA (ver PPP, sobre ATM)

   PPPoE (ver PPP, sobre Ethernet)

   preemptive multitasking, ?Que puede hacer FreeBSD?

   pw, pw, Configuracion a nivel de administrador

  R

   racoon, Paso 2: Asegurar el enlace

   RAID

                CCD, Configuracion de controlador de disco concatenado (CCD)

                hardware, RAID por Hardware

                software, Configuracion de controlador de disco concatenado
                (CCD), El administrador de volumenes Vinum

                Software, Los Discos son Demasiado Pequenos

                Vinum, El administrador de volumenes Vinum

   RAID-1, Integridad de Datos

   rc files

                rc.serial, Configuracion de puerto serie, /etc/rc.serial

   RDSI, RDSI

   Red privada virtual (ver VPN)

   Redes por TCP/IP, Configuracio de slip.hosts

   redes TCP/IP, Prerequisitos

   Registro Maestro de Arranque (RMA), RMA, /boot/boot0

   registro MX, Correo electronico y DNS

   Replica de discos, Integridad de Datos

   resolver, Configuracion de la Resolucion de Nombres, Terminologia

   respaldo en discos flexibles, ?Puedo utilizar disquetes para respaldar mis
   datos?

   restore, Dump y Restore

   reverse DNS, Terminologia

   RFCOMM, Protocolo RFCOMM

   RIP, Ejecutando gated, Construccion de un "route"

   rlogind, Asegurar servidores que se ejecutan como root y binarios
   SUID/SGID

   rmuser, rmuser

   root file system

                diskless operation, Preparacion del sistema de ficheros raiz

   root zone, Terminologia

   routed, Configuracion Final del Sistema

   router, ?Que puede hacer FreeBSD?, Construccion de un "route", Cortafuegos
   de filtrado/conformacion de trafico

   routing, Pasarelas y "routers"

   routing propagation, Propagacion de rutas

   RPM, Instalacion de los RPM necesarios

   RS-232C cables, Terminologia, Cables estandard RS-232C

   rshd, Asegurar servidores que se ejecutan como root y binarios SUID/SGID

  S

   sbsize, Limitar a los usuarios

   scp, Copia segura

   scripts de inicio, La entrada a FreeBSD

   SCSI, Numeracion de unidades desde el punto de vista de la BIOS

   SDL, Como determinar las caracteristicas de video

   SDP, Protocolo de descubrimiento de servicios (SDP)

   seguridad, Seguridad

                asegurar FreeBSD, Asegurar FreeBSD

                Ataques DoS (ver Denegacion de servicios (DoS))

                compromiso de cuentas, Introduccion

                Contrasenas de un solo uso, Contrasenas de un solo uso

                cortafuegos, Cortafuegos

                crypt, DES, MD5 y Crypt

                OpenSSH, OpenSSH

                OpenSSL, OpenSSL

                puertas traseras, Introduccion

   sendmail, Asegurar servidores que se ejecutan como root y binarios
   SUID/SGID, Configuracion Final del Sistema, Configuracion de sendmail

   serial communications, Sinopsis

   serial console, Instalacion de FreeBSD en un sistema sin monitor o
   teclado, Configurando la consola serie

   servidor de correo, El Servidor de Correo (Mail Host)

   Servidor de tipos de letra True Type de X11, Visualizacion de los tipos de
   letra

   Servidor DNS, Aclaraciones

   setkey, Paso 2: Asegurar el enlace

   shells, Shells

   Shells Bourne, Shells

   Sistema de cola LPD, Sinopsis

   sistema de ficheros

                ISO 9660, Introduccion

   sistema de ficheros raiz, Montaje y desmontaje de sistemas de ficheros

   sistemas de ficheros

                desmontar, La orden umount

                HFS, mkisofs

                ISO 9660, mkisofs

                Joliet, mkisofs

                montaje, La orden mount

                montaje con fstab, El fichero fstab

                snapshots, Instantaneas ("snapshots") de sistemas de ficheros

   slices, Organizacion de disco, Anadir discos

   SLIP, Sinopsis, Uso de SLIP, Configuracion del Kernel, Configuracio de
   slip.hosts

                cliente, Configurando un cliente SLIP

                conectando con, Haciendo una Conexion con SLIP

                enrutamiento, Consideraciones sobre el Enrutamiento

                servidor, Estableciendo un Servidor SLIP

   SMTP, Configuracion Final del Sistema, Configuracion Basica

   software de respaldo

                Amanda, Amanda

                cpio, cpio

                pax, pax

                tar, tar

   Solaris, ?Como funciona?, ?Que es esto?

   Sony Japan, ?Quien usa FreeBSD?

   Sophos Anti-Virus, ?Quien usa FreeBSD?

   sound cards, Configuracion del sistema

   source code, ?Que puede hacer FreeBSD?

   spreadsheet

                Abacus, Abacus

                Gnumeric, Gnumeric

   SRM, FreeBSD/alpha

   SSH

                sshd, Activar el acceso al sistema mediante SSH

   ssh, Otros aspectos del acceso con Kerberos y SSH

   sshd, Asegurar servidores que se ejecutan como root y binarios SUID/SGID

   stacksize, Limitar a los usuarios

   Striping, RAID0 - Distribucion por bandas

   striping de discos, Cuellos de Botella en el Acceso

   su, Asegurar la cuenta root y las cuentas administrativas, Uso de
   sysinstall(8)

   subnet, Pasarelas y "routers", Ejemplo

   Subversion (ver SVN)

   SunOS, Eleccion del nombre de dominio NIS

   Supervalu, ?Quien usa FreeBSD?

   SVN

                repository, El modelo de desarrollo de FreeBSD

   Symmetric Multi-Processing (SMP), ?Que puede hacer FreeBSD?

   sysctl, Asegurar el Kernel, dispositivos en bruto y el sistema sistema de
   ficheros

   sysinstall, Configuracion de la consola, Integracion dentro de los
   sistemas FreeBSD

                anadir discos, Uso de sysinstall(8)

   sysutils/cdrtools, Introduccion

  T

   tar, ?Puedo comprimir mis respaldos?, tar

   TCP Wrappers, TCP Wrappers

   TCP/IP networking, ?Que puede hacer FreeBSD?

   tcpwrapper, Seguridad en NIS

   TELEHOUSE America, ?Quien usa FreeBSD?

   telnetd, Asegurar servidores que se ejecutan como root y binarios
   SUID/SGID

   terminales, Consolas virtuales y terminales

   terminals, Terminales

   TeX, ?Por que utilizar una cola de impresion?

   TFTP

                diskless operation, Configuracion de servidores de TFTP y de
                NFS

   The GIMP, The GIMP

   timeout, PPP y direcciones de IP estaticas (fijas)

   Tipos TrueType, Tipos TrueType(R)

   trabajos de impresion, Introduccion

   traceroute, Solucion de problemas

   transporte

                exim, Agente de Transporte de Correo

                postfix, Agente de Transporte de Correo

                qmail, Agente de Transporte de Correo

                sendmail, Agente de Transporte de Correo

   Tru64 UNIX, Inicializacion de los mapeos de NIS

   ttyd, Configuracion de puerto serie

   TV cards, Configuracion de tarjetas de TV

  U

   U.C. Berkeley, ?Que puede hacer FreeBSD?, Breve historia de FreeBSD, En
   que consiste el FreeBSD que distribuimos

   UDP, Como funciona

   Unicode, El nucleo y los sistemas de ficheros

   UNIX, Permisos

   Unix, Aclaraciones

   USB

                discos, Dispositivos de almacenamiento USB

   USENET, ?Que puede hacer FreeBSD?

   users

                large sites running FreeBSD, ?Quien usa FreeBSD?

   Uso de fetchmail, Manejo de fetchmail

   Uso de procmail, Uso de procmail

   UUCP, Depuracion de Problemas

  V

   variables de entorno, Shells

   vertical scan rate, Antes de empezar

   vi, Editores de texto

   video packages, Ports y packages relacionados con el video

   video ports, Ports y packages relacionados con el video

   Vinum, Los Discos son Demasiado Pequenos

                concatenacion, Cuellos de Botella en el Acceso

                replicas, Integridad de Datos

                striping, Cuellos de Botella en el Acceso

   vipw, Configuracion a nivel de administrador

   virtual memory, ?Que puede hacer FreeBSD?

   VPN, Que es IPsec

                creacion, El escenario: dos redes, conectadas por Internet,
                que queremos que se comporten como una sola

  W

   Walnut Creek CDROM, Breve historia de FreeBSD

   Weathernews, ?Quien usa FreeBSD?

   web browsers

                Mozilla (ver Mozilla)

   web servers, ?Que puede hacer FreeBSD?

   WEP, WEP

   wheel, Asegurar la cuenta root y las cuentas administrativas

   widescreen flatpanel configuration, Anadir una pantalla panoramica a
   nuestro sistema

   Williams, Nate, Breve historia de FreeBSD

   Windows, Generacion una sola contrasena de un solo uso

   Windows NT, ?Que es esto?

   wireless networking, Redes sin cables ("wireless")

                encryption, Cifrado

                Punto de acceso, Construccion de un punto de acceso basado en
                FreeBSD

  X

   X Display Manager, Descripcion

   X Window System, ?Que puede hacer FreeBSD?

                (ver tambien XFree86)

                Accelerated-X, ?Que puede hacer FreeBSD?

                XFree86, ?Que puede hacer FreeBSD?

   X11, Configuracion de X11

   X11 tuning, Configurar X11

   XML, Tipos Anti-Aliasing

   Xorg, Configuracion de X11

   xorg.conf, Configurar X11

   Xpdf, Xpdf

   XVideo, Como determinar las caracteristicas de video

  Y

   Yahoo!, ?Quien usa FreeBSD?

   yellow pages (ver NIS)

  Z

   zip drive, El fichero de configuracion

   zones

                examples, Terminologia

                                    Colofon

   Este libro es el resultado del trabajo de cientos de colaboradores del
   "Proyecto de Documentacion de FreeBSD". El texto esta escrito en SGML de
   acuerdo al DTD DocBook y es formateado automaticamente en diferentes
   formatos de presentacion usando Jade, una herramienta DSSSL de software
   libre. Se han usado las hojas de estilo DSSSL de Norm Walsh con
   personalizacion de niveles para las instrucciones de presentacion de Jade.
   La version impresa de este documento no hubiese sido posible sin los
   programas TeX de Donald Knuth, LaTeX de Leslie Lamport y JadeTeX de
   Sebastian Rahtz.
