Una red consiste en su estructura física y la tecnología de interconexión de varias computadora para el intercambio de datos entre ellos, y en la forma, cómo estos datos están estructurados e interpretados - el protocolo de red. Igual como entre las personas, el lenguaje en que hablamos puede ser diferente, pero transmitimos contenidos identicos a pesar de ello, ``hablan'' las redes de diferente procedencia diferentes ``idiomas'', pero se trata de las mismas tareas a realizar. Para extender la analogía más todavía, si en un cuarto hay varias persionas que hablan diferentes idiomas, pueden comunicarse los que hablan entre si el mismo, sin interferir en las comunicaciones de los demás. En este escenario, Linux tiene todas las facilidades de un intérprete de varios idiomas, a través de varios paquete de software que permiten que ``hable'' diferentes ``idiomas'' - protocolos de red, eso sí, con las mismas restricciones de un intérprete humano. Hay ciertos términos o contextos que estos paquetes (todavía) no manejan, esto por un lado, pero por otro lado también hay conceptos fuera del simple idioma, que en un ambiente tienen sentido y en otro no tienen correspondencia. Si un grupo de zapateros ingleses se encuentra con un grupo de sastres alemanes podrán compartir aspectos comunes de su profesión, sin embargo sus habilidades profesionales difieren, y esta discrepancia no puede ser superado por el intérprete.
En este capítulo verémos cuatro diferentes protocolo de redes comunes, que podemos emplear en Linux. Para salír de la metáfora hay que destacar que para una computadora que es ``nativa'' de un determinado protocolo de red, de todas las computadoras físicamente conectadas en red solamente las computadoras que utilizan el mismo protocolo son ``visible''. Con el término ``visible'' expresamos la posibilidad que una computadora puede ofrecer o solicitar un servicio a otra. Estamos hablando de un modelo Servidor-Cliente, en oposición a un modelo Maestro-Esclavo. En todas las redes que vamos a analizar, cada computadora en principio puede ser Servidor de servicios a una o varias otras, y Cliente de otras computadoras en el mismo momento.
Los servicios básicos de la computación en redes son: Servicio de Archivos y Servicio de Impresión.
Nos vamos a concentrar en estos dos, ya que son comunes y parecidos a todas las redes. El servicio de mensajes también existe en todas, sin embargo allí ya empiezan diferencias en cuanto a la pregunta ¿qué es un mensaje?
El protocolo tal vez más elaborado y flexible es TCP/IP, el protocolo utilizado en Internet y cual es el protocolo ``nativo'' de Unix y por lo tanto también de Linux. TCP/IP se presta a la creación de nuevos protocolos. En Linux podemos ver un espectro de ello en el archivo /etc/services y a continuación vamos a hacer una comparación de los servicios oferidos por los protocolos de red en discusión por este documento.
Servicio | TCP/IP | MS-Net | Novell | AppleTalk |
Por supuesto que todos los sistemas operativos cuyo protocolo de red NO es TCP/IP tienen también implementaciones de este protocolo, e implementan programas Clientes y Servidores para estos servicios en ello, pero nuestro enfoque en este capítulo es: cómo utilizar y configurar los servicios ``ajenos'' que ofrece Línux a los otros.
El protocolo SMB - Session Message Block es utilizado en las redes implementados por los sistemas operativos de Microsoft, a partir de Windows 3.11. Existen dos implementaciones de ello para MS-Dos, que pueden inclusive bajarse gratuitamente de los sitios de esta empresa, uno de ellos llamado LanManager.
Durante la evolución de los sistemas operativos de Microsoft se han hecho una variedad de cambios e variaciones en los diferentes implementaciones de programas clientes y servidores, lo que hace más difícil adaptar y configurar un programa para atender a este tipo de redes, ya que según las versiones del sistema operativo de las diferentes computadoras que participan en la red hay diferentes requerimientos y problemas que atender.
La ídea original de las redes Microsoft - facilitar el trabajo en grupo - implementa un control de acceso muy leve, llamado ``SHARE-Level access control'' y fue complementado en versiones posteriores con ``USER-Level access control''. Lo primero se refiere, a los objetos compartidos (``shared'' en inglés) - directorios e impresoras. Para que un cliente gane acceso a un SHARE, el/la usuario/a tiene que introducir una cláve relacionada con este objeto - una mala idea, considerando que esto significa la (relativa) publicidad de una clave de acceso. A partir de Windows NT y el sistema de archivos correspondiente - ntfs, se introduce el concepto de la propiedad de objetos en relación con usuarias/os del sistema. El acceso a un objeto se concede entonces, si a) el/la usuario/a se ha anteriormente autentificado en la red b) el/la usuario/a tiene derecho de uso del objeto. La instancia responsable para la autentificación es el PDC el ``Primary Domain Controller'', al cual otras computadoras en la red solicitan información sobre el estátus de autenticidad de un/a usuario/a en la red cuando lo requieren.
Un concepto fundamental en las redes es el ``Browsing'', la ``visibilidad'' de computadoras y servicios. Redes Microsoft casi no requieren una planificación de su configuración. Las computadoras intercambian periódicamente información sobre las computadoras disponibles y sus servicios. De esta manera una computadora puede encenderse y apagarse en cualquier momento, y dentro de algún tiempo (0 a 15 minutos) todos los potenciales Clientes están enterado de presencia o ausencia de un cierto servicio. La identificación de servicios en la red se representa en tres datos:
Diferentes computadoras en la red pueden fungir como Browse-Server en la red. Entre ellos se elige de manera automatizada una de ellos que se denomina ``Master Broswer'', el cual sirve de base de datos para computadoras entrantes en la red. El Master Browser y el Domain Controller pueden ser la misma computadora y muchas veces lo suelen ser.
A la hora de que las redes Microsoft aumentan de tamaño se introduce el concepto de ``Dominio'', aunque de la documentación de Samba no se puede deducir con claridad su significado.
El paquete de Software que implementa programas Clientes y Servidores en Linux (Unix), se denomina ``Samba'' y fue percebido en primer lugar por Andrew Tridgell, que además nos regaló el maravilloso programa ``rsync''.
Samba implementa el protocolo SMB hasta en su expresión en Windows NT 4.0, con casí toda la funcionalidad, con la salvedad que utiliza (actualmente) a TCP/IP como protocolo de transporte. Esto significa, que las computadoras clientes un sistema operativo Microsoft (Windows) que participan en una red Microsoft con computadoras Linux tienen que instalar el protocolo TCP/IP para que pueden ``ver'' a la computadora Linux. Lógicamente tiene que configurarse este protocol de tal manera, que hay una conexión de red a nivel TCP/IP, quiere decir asignarles números IP's válidos, darles a conocer el servidor nombre en la configuración y/o editar el archivo LMHOSTS en el directorio Windows de la misma manera como /etc/hosts en las computadoras Linux (Unix).
La implementación del programa cliente SMB se llama ``smbclient'', una aplicación de línea de comando, para proveer los servicios SMB se sirve de dos programas que corren en modo ``daemon'' o que son lanzados por solicitud mediante inetd: ``smbd'' y ``nmbd''. El primero resuelve el transporte de información y el segundo realiza las funciones del ``browsing''.
Para utilizar los servicios compartidos de otras computadoras disponemos básicamente de smbclient, que incluye todos los servicios en una sola aplicación: browsing, impresión, acceso a archivos y envión de mensajes. Hay una variedad creciente de aplicaciones gráficas para facilitar el manejo de redes Microsoft, de los cuales la mayoría recurre internamente a llamadas al programa smbclient. Hay que notarse, que smbcliente permite la especificación del grupo de trabajo en cada llamada, por lo que obtenemos acceso a cualquier recurso SMB que es accesible mediante TCP/IP, independientemente de su organización en la Red Microsoft.
smb2www no necesariamente reside en la misma computadora que usa para acceder mediante smbclient a la red Microsoft. Debído a su carácter CGI, smb2www tiene que ser aplicado con cautela y solamente en redes locales que inhiben el acceso externo mediante un cortafuegos debídamente asegurado.
Una particularidad del uso de transporte TCP/IP para el protocolo SMB es, que la computadora es accesible mediante la resolución de nombres tradicional DNS y su número IP, pero también mediante el protocolo NetBios desde su ``nombre Netbios''. Este no necesariamente tiene que ser el mismo y los programas de Samba lo toman en cuenta. (smb)mount acepta mediante la opción de línea de comando parametros para el gestor de sistema de archivos específico. smbfs soporta (entre otros) los siguientes parámetros:
El programa smbclient es modelado según el cliente ftp. En vez de especificar un servidor ftp se especifica un servicio compartido en otra computadora en la línea de comandos y smbcliente presenta una línea de comandos, desde la cuál se pueden bajar archivos con el comando get, subir con el comando put, ver directorios y cambiar hacia ellos con ls y cd, etc. Hay un comando ``print'' que permite enviar un archivo local a una cola de impresión remota.
El hecho de que se puede ejecutar un comando desde la línea de comando de smbclient sín entrar en el modo interactivo permite la aplicación descrita por ejemplo en TkSmb, o para usar smbcliente como cola de impresión remota en /etc/printcap:
:lp=/dev/null:\
:sd=/var/spool/lpd/smblp:\
:if=smbclient -c ``print -`` //venta/lpr:\
:mx#0:\
:sh:
smbclient tiene una gran cantidad de opciones de línea de comando, de los cuales discutimos algunos destacados:
El servidor Samba consiste de los dos daemon-ios nmbd y smbd, que proveen el protocolo NetBios, y el protocolo SMB. La configuración permite una vasta cantidad de opciones para tratar con clientes de todos los niveles y variaciones del protocolo SMB. Dentro del marco de este Documento no se puede abarcar todos los aspectos y referimos a la amplia documentación disponible del mismo paquete samba, que no solamente provee información sobre el software, sino también sobre redes Microsoft, los sistemas operativos que los implementan y sus particularidades.
En vez de describir los diferentes problemas que tiene que resolver Samba para integrarse en estos, solo hacemos mención de algunos aspectos correspondientes:
Nótese, que el transporte TCP/IP para NetBios también permite crear redes Microsoft que exceden los límites de una red local.
Los servicios que son declarados para compartirse en red en primer lugar se manejan mediante los mecanismos de control de acceso del protocolo SMB, pero a continuación también aplican los permisos de acceso de Unix. Esto significa que aunque un directorio puede estar compartido en la red aparentemente en modo escritura/lectura, pero al momento de conectarse desde una computadora remota el núcleo solo permite acceso de lectura a los recursos indicados.
Samba puede actuar como controlador de dominio, pero también puede obtener la información sobre la autentizidad de una sesión desde un controlador remoto.
En las primeras versiones de redes Microsoft las claves de acceso fueron guardados y transmitidos en texto claro, lo que no es una idea muy buena. A continuación fueron introducidos mecanismo de encripción, que también son diferidos. Especialmente Windows NT ha tenido que implementar esto como medida de seguridad, pero obviamente tiene que mantenerse la opción de inviar o recbir claves no encriptados de parte de clientes ``antiguos''.
parametro = valor ; comentario
Hay dos tipos de secciones: [global], [homes] y [printers] son nombres reservados, todas las demas secciones son nombres de SHARES, de servicios o recursos compartidos.
La sección [global] es obligatoria y define parámetros generales, como por ejemplo el nombre NetBios, o la versión del protocolo.
Las impresoras definidas en printcap y los directorios home de las y los usuarias/os son elementos constantes en un sistema Unix. Los shares automáticos proveen a usuarios en la red que tienen una cuenta unix en la computadora local acceso a estos recursos, que además tuvieran en una sessión logín Unix automáticamente, desde clientes Microsoft de una manera natural y fácil de configurar.
La presencia de una sección [home] activa la creación automática de uns SHARE en el momento que un/a usuario se autentifica mediante SMB en el servidor Samba local y cuando este usuario tenga una cuenta unix, y por lo tanto un directorio home. La sección [home] sirve entonces como patrón para los parámetros de esta compartido. Se puede permitir acceso de solo lectura, se puede hacer el directorio invisible (no ``browsable''), se puede determinar el modo de acceso en cual se crean archivos si se accede a este directorio, etc. Para un usuario que accede a la computadora a través del ``Ambiente de Redes'' se presenta la computadora y un compartido ``homes'' dentro del cual va a encontrar los archivos y subdirectorios de su propia cuenta Unix en aquella computadora. Esta apariencia es igual para todos y todas las usuarios/as en la red, aunque efectivamente acceden a diferentes subdirectorios en la computadora Linux.
Este mecanismo puede usarse, para convertir una computadora Unix como servidor de archivos privados en una red Microsoft con un esfuerzo de configuración mínimo.
De una manera parecida y dada la presencia de una sección [printers] Samba analiza todas las entradas en el archivo printcap y los convierte en SHARES - colas de impresión Microsoft, con los parámetros indicados en esta sección.
Supongamos, que queremos proveer un directorio en red, al cual pueden acceder todas las computadoras Windows para intercambiar archivos de una computadora a otra y que utilizamos /usr/share/public como este directorio, tenemos que dar permiso de acceso de escritura y lectura al proceso smbd, y crear una sección en smb.conf, por ejemplo:
path = /usr/share/public
writeable = yes
browsable = yes
Si queremos restringir el acceso a un grupo definido de cuentas podemos usar el parametro:
Los parámetros por sección son muchos, vamos a presentar solamente algunos comunes:
Samba Web Administration Tool o ``Swat'' es la utilidad de configuración nativa para Samba. Swat opera como un servidor Web, que se conecta por defecto en el puerto TCP/IP 901. Al navegar la dirección:
Swat presenta una página ``home'' con una ``barra'' de tareas que incluye la administracón de: la sección global de smb.conf, los , SHARES, y de las usuarios y sus claves. Además puede revisarse el estátus del server y las conexiones actuales de clientes y la documentación, y se pueden parar y reanudar los daemon-ios smbd y nmbd.
La imágen 10.1 muestra una parte de la portada de Swat.
Una de las ventajas de Swat es, que la Samba puede principalmente ser configurado desde cualquier computadora en la red, sin embargo tienen que tomarse en consideración que la clave de autentificación queda expuesta en texto claro al menos que se aplica alguna medida de seguridad adicional, y generalmente es prudente solo permitir la configuración Swat desde la computadora local.
El protocolo desarrollado por Novell para la implementación de sus redes es IPX, y basandose en este SPX. Para compartir archivos se utiliza IPX y NCP - el ``Network Core Protocol'', para utilizar impresoras remotas es suficiente el protocolo ipx. El núcleo de Linux provee módulos para ambos protocolos, ipx y ncpfs. Para hacer funcionar la computadora Linux como servidor para clientes Novell es necesario una configuració específica del núcleo, pero además se necesitan los programas respectivos para acceder a la funcionalidad. Existe el paquete Linware y el paquete mars_nwe, que implementan las funciones necesarias para poder presentar las impresoras y/o directorios de una computadora Linux en la red como se procedieran desde un servidor Novell. NetWare provee en muchos casos las restricciones de nombres de MS-DOS, con nombres de archivos solamente mayuscula y con ocho letras para el nombre y tres letras para la extensión. También para NetWare se puede conseguir programas que corren en MS-Dos de manera gratis, lo que permite conectar computadoras viejas de clase 286 o inferior con MS-DOS como sistema operativo, y usarlos como terminales, o como servidores de impresoras.
IPX es un protocolo de Red más elaborado que SMB y los sistemas operativos Windows implementan programas Servidores y Clientes para el, lo que puede ser usado como alternativa a la conexión mediante Samba.
Una diferencia entre IPX y Samba es, que IPX no utiliza un protocolo de transporte, sino provee su propio gestor para el enrutamiento y transporte de paquetes de información.
Al momento de considerar usar una computadora Linux como ``puente'' entre redes Novell y redes Microsoft debe planificarse cuales recursos se ofrecen cada red. Comunmente se querra hacer los mismos directorios y las mismas impresoras de la computadora Linux disponible en ambos redes, y darles además nombres iguales o parecidos para facilitar a las y los usuarios de la red su operación.
También para la conexión con computadoras MacIntosh en ambas direcciones hay previsiones en el núcleo de Linux, que implementan el protocolo AppleTalk y los gestores para los sistemas de archivos de este sistema operativo. También como en las otras redes se requiere la instalación de un paquete de programas externos, en este caso llamado ``NetaTalk''.
AppleTalk contiene un abanico de protocolos de red, que son manejados por netatalk, que provee aplicaciones parecidos a mars_nwe y Samba para que Computadoras MacIntosh puedan usar impresora y archivos de Linux, o para que deste Linux se puede imprimir o grabar archivos en impresoras o discos de las computadoras MacIntosh.