



(1 opiniones)
La orden telnet es la herramienta básica para las conexiones remotas bajo linux. Con telnet podrás mantener sesiones con un terminal de la computadoa remota, ejecutando órdenes como si estuvieras conectado localmente. La conexión via telnet a un sistema es casi análoga a abrir una sesión en uno de los terminales en modo texto. Telnet no permite la conexión a un sistema en un entorno grafico, para ello existe otra herramienta que se estudiará más adelante. Sintaxis de la orden telnet:
telnet host [port]
Realmente telnet tiene muchas más versatilidad, pero éste es el formato más usual de la orden. Por defecto telnet se conecta al puerto 23 de la máquina destino, que es usualmente donde se activa el servidor de telnet, pero es posible abrir una sesión en puertos diferentes. Es posible, a través de una sesión remota, manejar el correo de un servidor pop3 (puerto 110) o enviar un correo a través de una sesión smtp (puerto 25).
Se inicia escribiendo el comando telnet seguido del nombre del host al que deseamos conectarnos. Telnet responde con el siguiente mensaje:
Trying (dir. IP)
Si la computadora acepta la conexión, responderá con un mensaje diciendo que se ha conectado:
Connected to manwe.ainulindale.es.
Si no lo logra, entonces contestará lo siguiente:
[Wed 7-20:27] carlos@Iluvatar:~ > telnet acm.asoc.fi.upm.es Trying 138.100.13.202... telnet: Unable to connect to remote host: Connection refused
Una vez abierta la sesión linux emite el mensaje
Connected to (nombre del host)
Y un mensaje que indica una secuencia determinada de caracteres, la secuencia de escape. Ésta sirve para salir de la sesión de terminal y pasar al interprete de ordenes de telnet. Se utiliza cuando se desea pasar ordenes directamente al interprete y no a la sesion en la maquina remota. Una vez conectado, se solicitara un nombre de usuario y una contraseña, si la informacion de inicio de sesión es correcta, se iniciará una sesión en el sistema remoto. A continuación un ejemplo de una sesión telnet desde una computadora linux, conectada a otra computadora linux.
[Wed 7-19:35] carlos@Iluvatar:~ > telnet manwe Trying 192.168.0.12... Connected to manwe.ainulindale.es. Escape character is '^]'. Debian GNU/Linux 2.2 manwe.ainulindale.es login: carlos Password: Last login: Wed Nov 7 18:20:19 2001 from iluvatar on pts/0 Linux Manwe 2.4.4 #14 Fri Oct 19 14:09:15 CEST 2001 i586 unknown No mail. [Wed 7-19:35] carlos@Manwe:~ > logout Connection closed by foreign host. [Wed 7-19:36] carlos@Iluvatar:~ >
En cuanto al servidor de telnet solo dos palabras, como instalarlo en debian y cómo abrir y cerrar el puerto. En debian instalar el servidor de telnet es algo tan simple como teclear el comando:
# apt-get install telnetd
Cuando finalice ya tendremos instalado y funcionando a la perfección el demonio de telnet, telnetd (telnet daemon). Si en algún momento quisieramos cerrar el puerto de telnet, lo que tendríamos que hacer sería editar el archivo /etc/inetd.conf, comentar la linea:
telnet stream tcp nowait telnetd.telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
Es necesario reiniciar el demonio de red, lo haremos con: /etc/init.d/inetd restart. En general, en la distribución debian los puertos de la máquina se gestionan desde este archivo.
Telnet es una herramienta muy poderosa, pero es vulnerable a ataques de usuarios maliciosos por que la transferencia de información a través de la red va sin codificar, y cualquiera observando el tráfico de la red podría descubrir nuestras contraseñas. Para dificultar el descubrimiento de la información privada que viaja a través de la red en este tipo de sesiones existe una herramienta de shell seguro ssh (secure shell). Su instalación en Debian es tan fácil como todo:
# apt-get install ssh
Una vez que la tengamos instaladas podremos abrir sesiones remotas de forma segura con el comando:
$ ssh -l nombre-de-usuario host
La primera vez que nos conectemos con esa ip nos pregunta si estamos seguros de a quién nos estamos conectando, ya que podríamos conectarnos a la maquina de un usuario malicioso, en la que nos autentificaríamos dándole así nuestra contraseña. En principio si conocemos la máquina destino, no tendría por qué haber problemas, aceptamos y nos autentificamos con nuestra contraseña. Una vez finalizado el proceso de autentificación, entramos en un terminal con las mismas posibilidades que el de telnet, pero en modo seguro.
Hemos visto cómo acceder a una máquina remota con un terminal de texto, pero linux nos ofrece muchas más posibilidades. Otra utilidad interesante para el manejo remoto de un ordenador es la posibilidad de abrir una sesión gráfica desde una máquina remota. Para ello tienen que cumplirse una serie de requisitos mínimos:
/etc/X11/gdm/gdm.conf en el fichero de configuración del GDM tiene que estar la opción: [xdmcp] ----> Enable=true HonorIndirect=false MaxPending=4 MaxPendingIndirect=4 MaxSessions=16 MaxWait=30 MaxWaitIndirect=30 Port=177
Para abrir una sesión remota, sólo tendremos que teclear el comando:
X :1 -query (nombre\_de\_la\_máquina)
Por ejemplo, mediante el mandato X :1 -query Iluvatar se arrancan las X (sesión gráfica) en el display 1, al que podremos acceder pulsando Control+Alt+F8, y solicita a la máquina una sesión gráfica por XDMCP.
Otra manera de ver la pueta en común de recursos del ordenador es el Sistema remoto de ficheros. El protocolo ftp nos permitía transferir archivos de una máquina a otra, en cambio nfs nos permite ver los archivos compartidos como parte de nuestra propia máquina. Los archivos compartidos podemos montarlos como parte de nuestro árbol de directorios. El proceso de configuración del nfs es algo más complicado, a continuación se detalla lo básico para que se puedan configurar un cliente y un servidor de nfs, pero para más información recomiendo encarecidamente acudir al NFS-HOWTO.
/etc/hosts @ Iluvatar 127.0.0.1 Iluvatar localhost 192.168.0.2 Manwe 192.168.0.3 Nessa /etc/hosts @ Nessa 127.0.0.1 Nessa localhost 192.168.0.1 Iluvatar 192.168.0.2 Manwe
directorio_que_se_exporta opciones_exportación Por ejemplo (Utilizaremos * para indicar opciones por defecto): /etc/exports @ Iluvatar # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). #dir_raiz destino(opciones) nessa(rw,no_root_squash) rw : read/write ro (*): read only no_root_squash : PERMITE que los clientes accedan a los archivos con owner root root_squash (*): EVITA que los clientes accedan a los archivos con owner root.
nfs-server mount -t nfs nombre:directorio_que_monto directorio_en_donde_monto
/etc/fstab @ Nessa [..] Iluvatar:/ /mnt/Iluvatar nfs defaults,user,noauto 0 0 Manwe:/ /mnt/Manwe nfs defaults,user,noauto 0 0
Ya puedes acceder a los archivos del servidor a través de NFS, pero falta una cosa importante: en este archivo no se tienen en cuenta cuestiones de seguridad.
Una vez que ya tenemos montada la red, seguramene querremos poder imprimir desde todos los ordenadores conectados a la red. Nada más fácil. En general para entrar un poco en detalles, tendremos que configurar la impresora en una máquina local que será la que actúe como servidora de impresión. Y luego configurar en la otra máquina la impresora como remota, este proceso es muy sencillo. Existe actualmente una aplicación muy sencilla para conseguirlo: Cups.
Samba es la adaptación del protocolo de Microsoft para compartir recursos, portada a linux. Con samba podemos, por ejemplo conseguir compartir carpetas en una máquina Windows y montarlas en linux, y exportar carpetas de un sistema linux, y verlas en una maquina Windows. Pero no sólo eso, también podemos compartir impresoras viendo desde Windows la impresora conectada a la maquina linux como si fuera servida por otra máquina Windows. Hay otras muchas cosas que se pueden hacer con samba, por ejemplo compartir bases de datos y servicios, para que la maquina cliente ve a linux como si de un servidor NT se tratara.
Este apartado está dedicado a la administración y mantenimiento de sistemas GNU/Linux basados en soluciones diskless (sin disco). Estos sistemas son de gran utilidad en áreas muy diversas como: procesamiento paralelo, terminales gráficas ``tontas'', y otras. La configuración de estos sistemas se realiza en dos partes: cliente y servidor. Las máquinas cliente necesitan un sistema de archivos para montar como raíz. Comúnmente éste sistema se haya en un disco "local" de la máquina. Sin embargo, los sistemas diskless no disponen de una partición raíz, y dependen por tanto de otro sistema para arrancar. NFS es una de las posibles alternativas que permiten arrancar un sistema Linux y montar como sistema raíz un directorio remoto. De esta manera, las máquinas cliente no requieren un disco duro local. Imaginemos un clúster de 20 equipos dedicado al procesamiento de datos. Normalmente estos clústeres no requieren de un disco local para trabajar con un rendimiento óptimo. Esto permite eliminar 20 discos de nuestro presupuesto, pero debemos considerar la compra de un disco lo suficientemente grande como para albergar los sistemas de archivos a compartir. Otro uso de esta facilidad consiste en arrancar un sistema Linux desde una máquina cualquiera con acceso a la red del servidor de NFS.
Lo primero es configurar una máquina para que comparta un directorio raíz por cada cliente. Es importante que los clientes tengan directorios distintos. Esto es, el servidor debe compartir distintos directorios para lograr que las máquinas respeten sus ficheros y sean independientes. Esto puede lograrse añadiendo las siguientes líneas a /etc/exports:
192.168.0.70 /unidades/cliente1,rw,no_root_squash 192.168.0.71 /unidades/cliente2,rw,no_root_squash
De esta manera compartiremos dos unidades para las máquinas 192.168.0.70 y 192.168.0.71. Estas unidades serán accesibles con todos los privilegios. Este es un gran problema con NFS, ya que cualquier ``gracioso'' armado con un portátil y una tarjeta de red con cualquiera de estas IP's podría gastarnos una ``broma''. Afortunadamente disponemos de "diversos" métodos para ``disuadir'' a esta gentecilla. Aún así, expondremos los que no conllevan violencia. En más común consiste en montar un servidor DHCP que asigne IP's sólo equipos con MAC conocida. De esta forma orientamos la seguridad a usuarios con una tarjeta de red determinada. Ésta es una buena medida. De hecho es la más habitual. Pero también complicada. Otra manera mucho más sencilla, y elegante para pequeñas redes privadas consiste en establecer entradas estáticas en nuestra tabla de ARP. La tabla ARP del kernel relaciona una IP con una MAC, y permite un nivel de seguridad aceptable.
La siguiente línea muestra cómo especificarle al kernel que una IP sólo será poseída por una máquina con dirección física 0004DD706542. Aúnque otra máquina tenga esta IP, no podrá montar las unidades NFS de nuestro equipo.
# arp Address HWtype HWaddress Flags Mask Iface 192.168.0.70 ether 00:04:DD:70:65:42 CM eth0
Una vez configurado el servidor, debemos intentar comprobar si realmente funciona. Para ello intentaremos montar alguno de los directorios compartidos desde otra máquina. Si esto funciona, ya tendremos una tercera parte de nuestro trabajo terminada. Sólo queda almacenar un sistema arrancable en el directorio compartido, y preparar el disquete de arranque del cliente.
El directorio a exportar debe contener todos los ficheros necesarios para el arranque de la máquina y su utilización. Lo imprescindible serían los directorios, etc, lib, usr...En el BootDisk.HOWTO.txt se incluyen los ficheros mínimos para un arranque, pero no interesa complicarnos la vida en exceso. Basta con instalar los paquetes del sistema base en dicha partición, o copiar ``cp -a /etc /unidades/cliente1/etc'' los ficheros desde nuestro sistema principal. Una vez instalado el sistema base, procedemos a configurarlo. A continuación exponemos los pasos más comunes en la configuración inicial. Con cd /unidades/cliente1/ chroot cambiamos el directorio raíz de nuestra shell, y trabajamos ``como'' si hubiésemos arrancado con esa partición como raíz.
Una vez hecho esto, configuraremos el hostname del cliente, instalamos los clientes de X, telnet, ssh, o lo que necesitemos. Si el cliente es Debian, usaremos dselect, apt-get, dpkg, alien...o rpm si usamos RedHat, Suse... Interesa dejarle los parámetros de red convenientemente configurados, y en particular los clientes de ftp, telnet, ssh, etc. Hecho esto, y lo que el usuario considere conveniente, daremos por terminada esta fase, y pasaremos a configurar el cliente.
Esta parte depende en gran medida del tipo de máquina de la que dispongamos y de su sistema de arranque. En principio este documento está pensado para arquitecturas i386 (es decir, PC's basados en micros de AMD o Intel.), si bien las diferencias en el sistema de arranque de un PC, y otras plataformas son salvables.
El arranque de una máquina i386 se realiza en los siguientes pasos.
El elemento encargado de arrancar la máquina es la BIOS. Las funciones de la BIOS son: comprobar los elementos básicos del sistema (POST), inicializarlos y buscar dispositivos ROM con código a ejecutar. Los dispositivos ROM son los encargados de realizar tareas que nuestra BIOS no puede hacer y que son necesarias para el arranque. Un ejemplo concreto es el sistema de arranque de las controladoras SCSI. No podríamos arrancar una máquina con discos SCSI sin haberlos inicializado previamente, y para ello la tarjeta SCSI lleva un pequeño programa (firmware) en una memoria de sólo lectura con el programa de inicialización. Este programa se carga en memoria y se ejecuta. Es la BIOS la que hace la carga del programa, y la CPU la encargada de su ejecución.
DTC 3210 SCSI BIOS Searching for devices: [ID 0] . DTC 3210 SCSI Host Controler [ID 1] . YAMAHA CD RW Drive [ID 2] ... Not Found [ID 3] ... Not Found [ID 4] ... Not Found [ID 5] ... Not Found [ID 6] ... Not Found [ID 7] ... Not Found
Otro dispositivo ROM conocido es la BOOT-ROM de algunas tarjetas de red local. No es algo común. Pero puede adquirirse fácilmente en tiendas especializadas. Una ROM de arranque contiene un programa que inicializa la tarjeta de red, y la emplea para conectarse a un servidor. El servidor nos envia una copia del kernel a través de nuestra tarjeta. Dicha imagen se lleva a memoria principal, y se ejecuta. Una vez hecho esto, sólo queda montar un sistema de archivos como raíz. Pero eso es algo que se explica un poco más adelante.
En caso de no tener ninguna BOOT-ROM, la BIOS busca un dispositivo del que cargar el kernel. Generalmente es una disquetera, un disco, o una unidad de cdrom. El proceso de carga de este kernel requiere su localización dentro de la unidad. (Puede encontrarse más documentación sobre el tema en Bootdisk-HOWTO).
El kernel es el encargado de inicializar y mantener en marcha el sistema. El kernel reside en una unidad de disco, y es la BIOS la que lo busca en los dispositivos de arranque. Si el kernel está en un disquete o en un disco IDE, entonces la BIOS estándar es capaz de encontrarlo y cargarlo. Sin embargo, si el kernel reside en un disco SCSI, entonces la BIOS no puede cargar el kernel. Tiene que recurrir a las rutinas almacenadas en la ROM de la controladora SCSI. De igual manera, si el kernel reside en una máquina remota, entonces hay que utilizar la ROM de la tarjeta de red para el arranque.
El kernel de la máquina cliente debe ser capaz de configurar la red, y de pedir archivos de un servidor NFS. Para ello no hay más remedio que recompilar el kernel. La compilación debe llevar al menos las siguientes opciones:
[NFS file system support.] [root file system over nfs.] [IP Kernel level autoconfiguration.] (Soporte para tu tarjeta de red)
Hay muchos métodos para generar disquetes de arranque. Los disquetes de arranque tienen: un gestor de arranque, y una o varias imágenes del kernel. El gestor se encarga de arrancar con un kernel u otro y pasarle una serie de parámetros. El kernel es la pieza central de nuestro sistema operativo, y una vez cargado debe completar el arranque del sistema. Para ello debe saber dónde está el resto del sistema, (Directorio raíz), y opcionalmente algunas cosas sobre nuestro hardware. Un gestor permite arrancar un sistema operativo u otro de forma sencilla, y pasarle parámetros para indicarle su forma de trabajo. Los gestores más conocidos y utilizados son: Lilo y Syslinux, Lilo se utiliza principalmente en instalaciones sobre disco duro, y syslinux se utiliza para generar disquetes de arranque. Syslinux utiliza un disquete formateado para msdos (FAT16) con ciertas peculiaridades. Este disquete contiene unos ficheros de texto con la configuración del sistema, y un binario con el gestor.
Para poder arrancar de un disquete de syslinux, tenemos que previamente formatearlo con la utilidad syslinux, y acto seguido, montarlo y personalizarlo. Si no queremos hacer todo esto, basta con sobreescribir con disco de arranque de cualquier distribución de Linux. En nuestro ejemplo hemos utilizado un disquete de una Debian GNU 2.2r3 (Potato)
Nuestro disquete contiene al menos los siguientes ficheros:
-rwxr-xr-x 1 sps misc 3349 Aug 29 2000 config.gz -rwxr-xr-x 1 sps misc 1243 Aug 29 2000 debian.txt -rwxr-xr-x 1 sps misc 838 Aug 29 2000 f1.txt -rwxr-xr-x 1 sps misc 774 Aug 29 2000 f10.txt -rwxr-xr-x 1 sps misc 865 Aug 29 2000 f2.txt -rwxr-xr-x 1 sps misc 1139 Aug 29 2000 f3.txt -rwxr-xr-x 1 sps misc 1239 Aug 29 2000 f4.txt -rwxr-xr-x 1 sps misc 1272 Aug 29 2000 f5.txt -rwxr-xr-x 1 sps misc 1427 Aug 29 2000 f6.txt -rwxr-xr-x 1 sps misc 786 Aug 29 2000 f7.txt -rwxr-xr-x 1 sps misc 1397 Aug 29 2000 f8.txt -rwxr-xr-x 1 sps misc 1383 Aug 29 2000 f9.txt -rwxr-xr-x 1 sps misc 1476 Aug 29 2000 install.sh -r-xr-xr-x 1 sps misc 5860 Aug 29 2000 ldlinux.sys -rwxr-xr-x 1 sps misc 1042807 Aug 29 2000 linux -rwxr-xr-x 1 sps misc 634 Aug 29 2000 rdev.sh -rwxr-xr-x 1 sps misc 1120 Aug 29 2000 readme.txt -rwxr-xr-x 1 sps misc 79465 Aug 29 2000 sys_map.gz -rwxr-xr-x 1 sps misc 1093 Aug 29 2000 syslinux.cfg -rwxr-xr-x 1 sps misc 7 Aug 29 2000 type.txt
fX.txt
Ficheros txt con la ayuda a mostrar con la tecla F(x)
syslinux.cfg
Configuraciones y parámetros de arranque
linux
Imagen del kernel
Este disquete está formateado en FAT16, con lo cual puede ser modificado bajo Linux y MSDOS. Al arrancar la máquina, SYSLINUX muestra una ayuda antes de arrancar un kernel determinado. Dicha ayuda se mostrará al pulsar las teclas F1 a F12. De ahí los nombres de los ficheros. SYSLINUX.CFG Contiene lo siguiente:
-- # see /usr/doc/syslinux/syslinux.doc.gz for file format description DEFAULT linux APPEND vga=normal noinitrd load_ramdisk=1 prompt_ramdisk=1 ramdisk_size=16384 root=/dev/fd0 disksize=1.44 TIMEOUT 0 DISPLAY debian.txt PROMPT 1 F1 f1.txt F2 f2.txt F3 f3.txt F4 f4.txt F5 f5.txt F6 f6.txt F7 f7.txt F8 f8.txt F9 f9.txt F0 f10.txt LABEL initrd
Lo que vamos a añadir es:
DEFAULT nfs LABEL nfs KERNEL linux APPEND vga=normal noinitrd root=nfsroot nfsroot=192.168.0.10:/unidades/cliente1 ip=192.168.0.70:192.168.0.10::255.255.255.0:CLiente1:eth0:0
Los parametros utilizados son:
Una vez modificado el fichero, sólo queda copiar el kernel que hemos compilado previamente, y probar.
|