SlideShare a Scribd company logo
1 of 12
Download to read offline
INTRODUCCIÓN 
A medida que avanza la tecnología nosotros queremos avanzar con ella y dejar a 
un lado esos aparatos viejos que consideramos ya “Pasados de moda”. Pero si 
nos detenemos a pensar que uso podríamos dar a estos aparatos que ocupan un 
espacio en nuestro lugar destinado a lo que nos estorba seria una reutilización que 
quizá podrá servir a otros y para esto existen proyectos súper interesantes y uno 
de ellos es LTSP, pero veamos que es esto.
LTSP “Linux Terminal Server Project” 
Es un conjunto de herramientas de tipo servidor que provee una manera simple de 
utilizar maquinas de bajo costo como estaciones de trabajo en modo gráfico o en 
modo de caracteres. 
Principalmente fue utilizado para proyectos escolares, pero debido a sus altas 
prestaciones es hoy en día una solución muy rentable para negocios y 
organizaciones. 
Esquema del entorno de clientes livianos “Thinclient” 
Funcionamiento del Servidor LTSP 
El cliente arranca ("bootea") mediante un protocolo llamado PXE (Pre-eXecution 
Environment). 
PXE realiza una petición de dirección IP al servidor DHCP local. 
El servidor DHCP envía los parámetros adicionales al cliente y baja una imagen 
del sistema de archivos Linux vía TFTP a un disco RAM dentro del cliente. 
El cliente arranca la imagen bajada de Linux, detecta el hardware y se conecta a 
una sesión X del servidor LTSP (normalmente administrada con LDM). 
Proceso de Arranque del Cliente Liviano ThinClient 
Cargar el kernel de Linux en la memoria RAM del cliente. Esto se hace mediante 
PXE. 
Una vez que el kernel ha sido cargado en la memoria, comenzará la ejecución. 
El núcleo inicializa todo el sistema y los periféricos que reconozca. 
Aquí es donde lo realmente interesante comienza. Durante el proceso de carga del 
núcleo, una imagen initramfs también será cargada en la memoria.
Normalmente, cuando el núcleo ha terminado de arrancar, se pondrá en marcha el 
nuevo task launcher upstart, que se encargará de la puesta en marcha de un 
servidor o una estación de trabajo. Pero, en este caso, se ha instruido al kernel 
para que cargue un pequeño shell script en su lugar. Este script se llama /init, y 
reside en la raíz de initramfs. 
El script /init empieza por montar /proc y /sys, arranca udev para descubrir e 
inicializar el hardware, especialmente la tarjeta de red, que es necesaria en todo 
aspecto para arrancar de aquí en adelante. También, crea un pequeño disco en 
RAM, donde se puede guardar cualquier cosa que se necesite, por ejemplo, para 
configurar el archivo xorg.conf. 
Se configura la interfaz de loopback de la red. Esta la que tiene 127.0.0.1 como 
dirección IP. 
Se corre un cliente DHCP llamado ipconfig para hacer otra consulta al servidor 
DHCP Esta nueva consulta obtiene información tal como el nfs root server, el 
default gateway y otros parámetros importantes del sistema del archivo 
dhcp.conf 
Cuando ipconfig obtiene una respuesta del servidor, la información que se recibe 
se usa para configurar la interfaz Ethernet y para determinar desde que servidor 
se va a montar el root. 
Hasta este momento el sistema de directorio ha sido un disco ram. Ahora el script 
/init montará un nuevo sistema de directorio vía NFS. En el caso que sea vía 
NBD, la imagen que será cargada será generalmente /opt/ltsp/images/i386.img. 
Si la raíz es montada vía NFS, entonces el directorio que será exportado desde el 
servidor es típicamente /opt/ltsp/i386. No es posible montar el nuevo sistema de 
directorio como /, primero debe ser montado a un directorio separado. Luego hará 
un run-init, que cambiará el sistema de directorio raíz actual por un nuevo sistema 
de directorio. Cuando esta etapa se completa, el sistema de directorio quedará 
montado en /. A esta altura, cualquier directorio que necesite ser creado o escrito 
para un arranque normal , como por ejemplo /tmp, o /var, serán montados en este 
momento. 
Una vez que el proceso de montaje del nuevo sistema de directorios es finalizado, 
el sistema ya no utiliza mas el script /init y se pasa a utilizar el verdadero programa 
/sbin/init. 
El programa init va a leer el directorio /etc/event.d y comenzará a configurar el 
ambiente del cliente. A partir de aquí en el cliente se comienza a ejecutar el primer 
comando de /etc/rcS.d. 
Se ejecutará el comando S32ltsp-client-setup que configurará muchos aspectos 
del ambiente del cliente, como por ejemplo chequear si los dispositivos locales 
necesitan arranque, cargar algún módulo específico, etc. 
A continuación el programa init va a comenzar a ejecutar comandos en el 
directorio /etc/rc2.d
Uno de los items en el directorio /etc/rc2.d es el comando S20ltsp-client-core que 
estará ejecutándose mientras que el cliente está arrancando. 
El archivo lts.conf será parseado (analizado), y todos los parámetros en ese 
archivo que correspondan con ese cliente fino serán definidos como variables de 
ambiente para ser usadas por el script S20ltsp-client-core. 
Si el sonido está configurado, el demonio pulseaudio será arrancado para permitir 
conexiones remotas de audio desde el servidor para sonar en el cliente. 
Si el cliente soporta dispositivos locales, el programa ltspfsd es ejecutado 
permitiendo al servidor leer dispositivos como "memory sticks" o CDs mapeados 
con el cliente. 
En este momento alguna de las sesiones definidas en el archivo lts.conf será 
ejecutada. Las sesiones por pantalla son lo que se va a ver en todas las pantallas 
de sus terminales virtuales. Estas son las pantallas virtuales estándares que tienen 
las distribuciones de GNU/Linux por ejemplo de Alt-F1, hasta Alt-F9. Por defecto 
un "getty" estándar basado en caracteres va a correr en la pantalla 1 
(SCREEN_01 en el archivo lts.conf ). También, si no se especifica nada en el 
archivo lts.conf , una script de pantalla ldm va a ser ejecutado en SCREEN_07. El 
LTSP Display Manager (ldm) es el administrador de login por defecto para LTSP. 
Si SCREEN_07 (que es la terminal que corresponde al entorno grafico) esta 
cargada con un valor ldm, o startx, entonces el sistema X Windows será 
ejecutado, brindándole una interfaz gráfica de usuario. Por defecto el servidor 
Xorg va a testear la tarjeta, va a crear un archivo /etc/X11/xorg.conf con valores 
por defecto en el disco ram de la terminal y va a comenzar xorg con esa 
configuración. 
El servidor X va a crear un túnel cifrado ssh hacia el servidor, en caso de ldm, o 
una consulta XDMCP al servidor LTSP, en el caso de startx. Para cualquiera de 
los casos se va a ver una caja de login en la terminal. 
Herramienta de Trabajo 
Para este laboratorio se utilizo un equipo con sistema operativo Ubuntu 9.04, este 
funcionara como servidor LTSP, además tiene dos interfaces de red (una cableada 
y otra inalámbrica). 
Por la interfaz cableada se conectan los clientes LTSP. 
Por la interfaz inalámbrica se dará salida a internet a los clientes 
Para los clientes se utilizaron maquinas que se tenían en el área de sistemas 
donde laboro.
Paquetes Necesarios 
Para implementar LTSP se necesita una serie de paquetes, pero como en Linux 
esto de la descarga es tan fácil utilizando APT, lo haremos de la siguiente forma. 
sudo apt-get update 
Actualizamos la lista de paquetes, luego. 
sudo apt-get install ltsp-server ltsp-server-standalone 
ltsp-server: Este paquete contiene las herramientas para trabajar con el servidor 
LTSP. 
ltsp-server-standalone: Este paquete contiene las herramientas para construir el 
entorno de los clientes livianos “Thinclients”. 
nfs-kernel-server: El cliente lo utilizara para montar su propio sistema de archivos. 
Los demas paquetes mencionados como tftp, dhcp, etc son descargados con el 
paquetes ltsp-server-standalone 
Cuando la descarga haya finalizado, las carpetas que nos ocuparan son 
/var/lib/tftpboot/ltsp y /opt/ltsp. 
La primera contiene la imagen del kernel que sera enviada por tftp a los clientes y 
la segunda el sistema de archivos que sera montado en los clientes. 
Empecemos!!! 
Vamos a empezar por activar el demonio del servidor tftp de la siguiente forma, 
con nuestro editor de texto vamos al archivo sudo vim /etc/default/tftpd-hpa. El 
archivo sera igual o parecido a este. 
#Defaults for tftpd-hpa 
RUN_DAEMON="no" 
OPTIONS="-l -s /var/lib/tftpboot" 
y cambiamos el valor de RUN_DAEMOS=“no” a RUN_DAEMON=”yes”, 
guardamos y reiniciamos el servidor tftp /etc/init.d/tftpd-hpa restart. 
Continuamos ahora creando la imagen del kernel que sera enviada a los clientes 
por medio de tftp. Ejecutamos el siguiente comando ltsp-build-client --arch i386, 
el --arch es para especificar la arquitectura del kernel que se va a crear. 
Nota: En este paso dependemos de nuestra conexión a internet (ancho de banda) 
ya que descargara todos los componentes necesarios desde los repositorios que 
estén en internet. 
Si todo ha salido bien tendremos un mensaje como este “información: la 
instalación del cliente LTSP se completó satisfactoriamente”
Ya con este paso finalizado, ahora podemos ver que en la carpeta /opt/ltsp/i386 
hay un sistema de archivos creado el cual sera usado por nuestros clientes. 
Ahora pasaremos a la configuración del servidor NFS para que los clientes puedan 
acceder a los archivos y monten el sistema de archivos, con nuestro editor de 
texto favorito editamos el archivo sudo vim /etc/exports. El archivo exports sera 
igual o similar a este. 
# /etc/exports: the access control list for filesystems which may be exported 
# to NFS clients. See exports(5). 
# 
# Example for NFSv2 and NFSv3: 
# /srv/homes hostname1(rw,sync,no_subtree_check) 
hostname2(ro,sync,no_subtree_check) 
# 
# Example for NFSv4: 
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) 
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) 
y agregamos la siguiente linea justo debajo del ultimo comentario 
/opt/ltsp/i386 (ro,no_root_squash,async,no_subtree_check), a continuación 
ejecutamos este comando sudo exportfs -ra, para que nfs vuelva a leer el archivo 
exports y toma los cambios que hemos realizado. 
Hasta el momento tenemos configurado el servidor tftp, creamos el ambiente del 
cliente con ltsp-build-client y configuramos nuestro servidor nfs, ahora pasamos 
a la configuración del que hará posible que el cliente arranque por medio de la red 
y es nuestro servidor dhcp. Cuando descargamos el paquete ltsp-server-standalone 
este descarga el servidor dhcp (dhcp3-server) a su vez descarga 
un segundo archivo de configuración dhcpd.conf que es el ejemplo para 
configuración de los clientes livianos, este archivo se encuentra en 
/etc/ltsp/dhcpd.conf y sera igual o similar a este.
# 
# Default LTSP dhcpd.conf config file. 
# 
authoritative; 
subnet 192.168.0.0 netmask 255.255.255.0 { 
range 192.168.0.20 192.168.0.250; 
option domain-name "example.com"; 
option domain-name-servers 192.168.0.1; 
option broadcast-address 192.168.0.255; 
option routers 192.168.0.1; 
# next-server 192.168.0.1; 
# get-lease-hostnames true; 
option subnet-mask 255.255.255.0; 
option root-path "/opt/ltsp/i386"; 
if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" { 
filename "/ltsp/i386/pxelinux.0"; 
} else { 
filename "/ltsp/i386/nbi.img"; 
} 
} 
Descomentamos las dos lineas resaltadas y empezamos a definir los parámetros 
según sea nuestro criterio. 
Nota: el parámetro next-server indica cual es el servidor tftp, si tuvieras este 
servidor en otra maquina, coloca aquí su ip. Reemplazo el archivo original de 
configuración del servidor dhcp por el que acabe de editar y reinicio el servidor 
/etc/init/dhcp3 restart.
Ahora pasamos a la configuración de los clientes, el archivo lts.conf que se 
encuentra en /opt/ltsp/i386/usr/share/doc/ltsp-client-core/examples es el que 
contiene las opciones y características que tendrán los clientes, así que movemos 
o copiamos este archivo a la carpeta /var/lib/tftboot/ltsp/i386/ y comenzamos a 
adaptarlo según nuestra necesidad. Para el caso nuestro se realizaron las 
siguientes adaptaciones para nuestros clientes. 
[default] 
X_COLOR_DEPTH=16 
#XSERVER = vesa 
#X_MODE_0 = 1024x768 
LOCALDEV=True 
SOUND=True 
SYSLOG_HOST=server 
XKBLAYOUT=es 
SCREEN_07=ldm 
SERVER =192.168.2.25 
ALLOW_SHUTDOWN=true 
[00:d0:b7:c0:06:71] 
LDM_USERNAME=usuario1 
LDM_PASSWORD=museo1 
SCREEN_02 = shell 
X_RAMPERC = 80 
SOUND=TRUE 
LOCALDEV=TRUE 
[00:d0:b7:e5:98:59] 
LDM_USERNAME=usuario2 
LDM_PASSWORD=museo1 
SCREEN_02 = shell 
X_RAMPERC = 80 
SOUND=TRUE 
LOCALDEV=TRUE
[00:d0:b7:e5:9d:c8] 
LDM_USERNAME=usuario3 
LDM_PASSWORD=museo1 
SCREEN_02 = shell 
X_RAMPERC = 80 
SOUND=TRUE 
LOCALDEV=TRUE 
Bueno vamos a explicar las opciones aquí utilizadas, además en la pagina oficial 
del proyecto están estas y otras muy bien documentadas. 
Las direcciones MAC se pueden utilizar para instruir a ltsp para que entregue una 
configuración especifica a dicha maquina con esa mac (súper interesante... no!) 
La opción [Default] aplicara para todos los clientes en general. 
X_COLOR_DEPTH=16: Numero de bits para la profundidad de color, el valor puede 
ser 8,15,16,24,32. 
SERVER: Define quien es el servidor LTSP 
XSERVER: Define el servidor X que correrá en el cliente. 
X_MODE_0: La resolución por defecto que tendrá el cliente. 
LOCALDEV: Que el cliente pueda utilizar los dispositivos de almacenamiento 
local. 
SOUND: Habilita el demonio de sonido en el cliente. 
SYSLOG_HOST: Si el valor este es “true” enviara los logs de los clientes a la 
maquina que este especificada en la variable “SERVER”. 
XKBLAYOUT: Diseño del teclado, elegimos el idioma de nuestro teclado. Para 
mayor información consulte su XORG. 
Con estas opciones los clientes funcionaron perfecto y sin problemas, en la pagina 
del proyecto se encuentran muchas mas opciones interesantes, así que solo 
queda es leer y probar. 
Nota: Cada vez que modifiquemos este archivo se debe actualizar la imagen que 
se creo con lts-build-client para que los cambios apliquen y no surjan problemas, 
esto lo hacemos de la siguiente manera sudo ltsp-update-image 
Con esto ya solo queda guardar el archivo y encender uno de los clientes para 
empezar a depurar errores.
PROBLEMAS DURANTE LA IMPLEMENTACIÓN 
– Cuando se inicio pro primera vez el cliente presento un problema con la 
memoria RAM (no se copiaban los archivos en ella) y esto se debió a que el 
cliente tenia dos módulos de ram con diferente bus y esto ocasionada por 
decirlo de alguna manera diferentes velocidades de procesamiento. 
Entonces la solución es quitar un modulo y funcionar con el otro o colocar el 
otro modulo con el mismo bus. 
– Las opciones que se encuentran comentadas en el archivo lts.conf en la 
sección Default se deben a que cuando inicia la terminal no tomaba la 
resolución 1024x768 y solo nos daba un máximo de resolución de 800x600 
pero no era suficiente para lo que queríamos mostrar, entonces el 
compañero Fernando Castro a.k.a Kleper me dijo que comentara las 
lineas que ubuntu siempre se configuraba “solo” y que con estos 
parámetros lo estaríamos confundiendo, procedí a comentarlas y perfecto 
nos tomaba una resolución máxima de 1440x900.
CONCLUSIONES 
En el mundo de GNU/LINUX muchas son las soluciones que se pueden encontrar 
para la reutilización de maquinas con pocas prestaciones y recursos limitados para 
un fin especifico. Con la implementación de LTSP me doy cuenta que esta 
comunidad de desarrolladores de software libre realizan un estupendo trabajo, 
desinteresadamente y con una calidad de producto final impresionante. 
En la pagina oficial del proyecto podemos encontrar cada uno de los detalles de 
como funciona, que podemos hacer con este software, una wiki con excelente 
documentación y un sin fin de ayuda para la implementación. 
La implementación es sencilla y altamente personalizable, además de que cuenta 
con muy pocos archivos de configuración y hace muy fácil de trabajar tanto la 
configuración del servidor como la de los clientes. También sus opciones para 
utilizar en los archivos de configuración son fáciles de entender y así poder ajustar 
un cliente para un buen funcionamiento y aprovechamiento del recurso. 
Para negocios y empresas es una solución muy rentable ya que con muy poco 
pueden implementar soluciones por ejemplo para sus clientes, seria muy 
agradable poder consultar el catalogo de productos con los cuales usted cuenta o 
no cuenta y esto lo puede lograr con una maquina de pocos recursos y ltsp.
ENLACES RELACIONADOS 
Oficiales 
Pagina Oficial del Proyecto 
http://www.ltsp.org/ 
Wiki del Proyecto 
http://wiki.ltsp.org/twiki/bin/view/Ltsp/WebHome 
Documentación Oficial 
http://wiki.ltsp.org/twiki/bin/view/Ltsp/Documentation 
Soporte del proyecto en Español 
http://groups.yahoo.com/group/ltsp-es-reloaded 
No Oficiales 
http://es.wikibooks.org/wiki/Servidor_Terminal_Linux 
http://tuxpuc.pucp.edu.pe/content/view/451/12/ 
http://el64.blogspot.com/2007/08/cmo-instalar-ltsp-en-feisty-terminales.html 
http://doc.ubuntu.com/edubuntu/edubuntu/handbook/C/customizing-thin-client. 
html 
Opciones para el Archivo LTS.CONF 
http://wiki.ltsp.org/twiki/bin/view/Ltsp/LtsConf#XkbLayout 
http://www.ltsp.org/~sbalneav/LTSPManual.html#ldm-variables 
Otros 
DHCPD 
http://es.wikipedia.org/wiki/DHCP 
NFS 
http://es.wikipedia.org/wiki/NFS 
TFTP 
http://es.wikipedia.org/wiki/TFTP

More Related Content

Similar to Ltsp linux terminal server project-

Instalación KOHA: desarrollo, requerimientos y configuración
Instalación KOHA: desarrollo, requerimientos y configuraciónInstalación KOHA: desarrollo, requerimientos y configuración
Instalación KOHA: desarrollo, requerimientos y configuraciónSocialBiblio
 
28 el directorio sysconfig
28  el directorio sysconfig28  el directorio sysconfig
28 el directorio sysconfigAprende Viendo
 
Como instalar Unix(Johanna)
Como instalar Unix(Johanna)Como instalar Unix(Johanna)
Como instalar Unix(Johanna)JohannaCamila
 
Servicio de instalación remota en linux con pxe
Servicio de instalación remota en linux con pxeServicio de instalación remota en linux con pxe
Servicio de instalación remota en linux con pxeAndres Ldño
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuariosjuliananena
 
Instalación de servidor DHCP en Ubuntu Server 12.04
Instalación de servidor DHCP en Ubuntu Server 12.04Instalación de servidor DHCP en Ubuntu Server 12.04
Instalación de servidor DHCP en Ubuntu Server 12.04Totus Muertos
 
Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72Euller108BB72
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunixsandrasal23
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunixsandrasal23
 
All about linux #ubuntu (spanich)
All about linux #ubuntu (spanich)All about linux #ubuntu (spanich)
All about linux #ubuntu (spanich)Wolphkens Leveille
 

Similar to Ltsp linux terminal server project- (20)

Instalación KOHA: desarrollo, requerimientos y configuración
Instalación KOHA: desarrollo, requerimientos y configuraciónInstalación KOHA: desarrollo, requerimientos y configuración
Instalación KOHA: desarrollo, requerimientos y configuración
 
28 el directorio sysconfig
28  el directorio sysconfig28  el directorio sysconfig
28 el directorio sysconfig
 
Unix JCRB
Unix JCRBUnix JCRB
Unix JCRB
 
Como instalar Unix(Johanna)
Como instalar Unix(Johanna)Como instalar Unix(Johanna)
Como instalar Unix(Johanna)
 
Servicio de instalación remota en linux con pxe
Servicio de instalación remota en linux con pxeServicio de instalación remota en linux con pxe
Servicio de instalación remota en linux con pxe
 
Entorno grafico
Entorno graficoEntorno grafico
Entorno grafico
 
Entorno grafico
Entorno graficoEntorno grafico
Entorno grafico
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuarios
 
Instalación de servidor DHCP en Ubuntu Server 12.04
Instalación de servidor DHCP en Ubuntu Server 12.04Instalación de servidor DHCP en Ubuntu Server 12.04
Instalación de servidor DHCP en Ubuntu Server 12.04
 
Jadira palta
Jadira paltaJadira palta
Jadira palta
 
Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunix
 
Instalar unixElvis Urquizo
Instalar unixElvis UrquizoInstalar unixElvis Urquizo
Instalar unixElvis Urquizo
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunix
 
Ltps
LtpsLtps
Ltps
 
Ronald
RonaldRonald
Ronald
 
Curso básico linux
Curso básico linuxCurso básico linux
Curso básico linux
 
TCP/IP
TCP/IPTCP/IP
TCP/IP
 
All about linux #ubuntu (spanich)
All about linux #ubuntu (spanich)All about linux #ubuntu (spanich)
All about linux #ubuntu (spanich)
 
Nicolle
NicolleNicolle
Nicolle
 

More from jeysonh

Defeating whats app’s lack of privacy
Defeating whats app’s lack of privacyDefeating whats app’s lack of privacy
Defeating whats app’s lack of privacyjeysonh
 
Análisis forense metadatos
Análisis forense metadatosAnálisis forense metadatos
Análisis forense metadatosjeysonh
 
Operadores relacionales y lógicos en c++
Operadores relacionales y lógicos en c++Operadores relacionales y lógicos en c++
Operadores relacionales y lógicos en c++jeysonh
 
Introducción al hacking
Introducción al hackingIntroducción al hacking
Introducción al hackingjeysonh
 
Bring Your Own Device
Bring Your Own DeviceBring Your Own Device
Bring Your Own Devicejeysonh
 
Introducción al la virtualization
Introducción al la virtualizationIntroducción al la virtualization
Introducción al la virtualizationjeysonh
 
Write up desafio 20 eset
Write up desafio 20 esetWrite up desafio 20 eset
Write up desafio 20 esetjeysonh
 

More from jeysonh (7)

Defeating whats app’s lack of privacy
Defeating whats app’s lack of privacyDefeating whats app’s lack of privacy
Defeating whats app’s lack of privacy
 
Análisis forense metadatos
Análisis forense metadatosAnálisis forense metadatos
Análisis forense metadatos
 
Operadores relacionales y lógicos en c++
Operadores relacionales y lógicos en c++Operadores relacionales y lógicos en c++
Operadores relacionales y lógicos en c++
 
Introducción al hacking
Introducción al hackingIntroducción al hacking
Introducción al hacking
 
Bring Your Own Device
Bring Your Own DeviceBring Your Own Device
Bring Your Own Device
 
Introducción al la virtualization
Introducción al la virtualizationIntroducción al la virtualization
Introducción al la virtualization
 
Write up desafio 20 eset
Write up desafio 20 esetWrite up desafio 20 eset
Write up desafio 20 eset
 

Ltsp linux terminal server project-

  • 1. INTRODUCCIÓN A medida que avanza la tecnología nosotros queremos avanzar con ella y dejar a un lado esos aparatos viejos que consideramos ya “Pasados de moda”. Pero si nos detenemos a pensar que uso podríamos dar a estos aparatos que ocupan un espacio en nuestro lugar destinado a lo que nos estorba seria una reutilización que quizá podrá servir a otros y para esto existen proyectos súper interesantes y uno de ellos es LTSP, pero veamos que es esto.
  • 2. LTSP “Linux Terminal Server Project” Es un conjunto de herramientas de tipo servidor que provee una manera simple de utilizar maquinas de bajo costo como estaciones de trabajo en modo gráfico o en modo de caracteres. Principalmente fue utilizado para proyectos escolares, pero debido a sus altas prestaciones es hoy en día una solución muy rentable para negocios y organizaciones. Esquema del entorno de clientes livianos “Thinclient” Funcionamiento del Servidor LTSP El cliente arranca ("bootea") mediante un protocolo llamado PXE (Pre-eXecution Environment). PXE realiza una petición de dirección IP al servidor DHCP local. El servidor DHCP envía los parámetros adicionales al cliente y baja una imagen del sistema de archivos Linux vía TFTP a un disco RAM dentro del cliente. El cliente arranca la imagen bajada de Linux, detecta el hardware y se conecta a una sesión X del servidor LTSP (normalmente administrada con LDM). Proceso de Arranque del Cliente Liviano ThinClient Cargar el kernel de Linux en la memoria RAM del cliente. Esto se hace mediante PXE. Una vez que el kernel ha sido cargado en la memoria, comenzará la ejecución. El núcleo inicializa todo el sistema y los periféricos que reconozca. Aquí es donde lo realmente interesante comienza. Durante el proceso de carga del núcleo, una imagen initramfs también será cargada en la memoria.
  • 3. Normalmente, cuando el núcleo ha terminado de arrancar, se pondrá en marcha el nuevo task launcher upstart, que se encargará de la puesta en marcha de un servidor o una estación de trabajo. Pero, en este caso, se ha instruido al kernel para que cargue un pequeño shell script en su lugar. Este script se llama /init, y reside en la raíz de initramfs. El script /init empieza por montar /proc y /sys, arranca udev para descubrir e inicializar el hardware, especialmente la tarjeta de red, que es necesaria en todo aspecto para arrancar de aquí en adelante. También, crea un pequeño disco en RAM, donde se puede guardar cualquier cosa que se necesite, por ejemplo, para configurar el archivo xorg.conf. Se configura la interfaz de loopback de la red. Esta la que tiene 127.0.0.1 como dirección IP. Se corre un cliente DHCP llamado ipconfig para hacer otra consulta al servidor DHCP Esta nueva consulta obtiene información tal como el nfs root server, el default gateway y otros parámetros importantes del sistema del archivo dhcp.conf Cuando ipconfig obtiene una respuesta del servidor, la información que se recibe se usa para configurar la interfaz Ethernet y para determinar desde que servidor se va a montar el root. Hasta este momento el sistema de directorio ha sido un disco ram. Ahora el script /init montará un nuevo sistema de directorio vía NFS. En el caso que sea vía NBD, la imagen que será cargada será generalmente /opt/ltsp/images/i386.img. Si la raíz es montada vía NFS, entonces el directorio que será exportado desde el servidor es típicamente /opt/ltsp/i386. No es posible montar el nuevo sistema de directorio como /, primero debe ser montado a un directorio separado. Luego hará un run-init, que cambiará el sistema de directorio raíz actual por un nuevo sistema de directorio. Cuando esta etapa se completa, el sistema de directorio quedará montado en /. A esta altura, cualquier directorio que necesite ser creado o escrito para un arranque normal , como por ejemplo /tmp, o /var, serán montados en este momento. Una vez que el proceso de montaje del nuevo sistema de directorios es finalizado, el sistema ya no utiliza mas el script /init y se pasa a utilizar el verdadero programa /sbin/init. El programa init va a leer el directorio /etc/event.d y comenzará a configurar el ambiente del cliente. A partir de aquí en el cliente se comienza a ejecutar el primer comando de /etc/rcS.d. Se ejecutará el comando S32ltsp-client-setup que configurará muchos aspectos del ambiente del cliente, como por ejemplo chequear si los dispositivos locales necesitan arranque, cargar algún módulo específico, etc. A continuación el programa init va a comenzar a ejecutar comandos en el directorio /etc/rc2.d
  • 4. Uno de los items en el directorio /etc/rc2.d es el comando S20ltsp-client-core que estará ejecutándose mientras que el cliente está arrancando. El archivo lts.conf será parseado (analizado), y todos los parámetros en ese archivo que correspondan con ese cliente fino serán definidos como variables de ambiente para ser usadas por el script S20ltsp-client-core. Si el sonido está configurado, el demonio pulseaudio será arrancado para permitir conexiones remotas de audio desde el servidor para sonar en el cliente. Si el cliente soporta dispositivos locales, el programa ltspfsd es ejecutado permitiendo al servidor leer dispositivos como "memory sticks" o CDs mapeados con el cliente. En este momento alguna de las sesiones definidas en el archivo lts.conf será ejecutada. Las sesiones por pantalla son lo que se va a ver en todas las pantallas de sus terminales virtuales. Estas son las pantallas virtuales estándares que tienen las distribuciones de GNU/Linux por ejemplo de Alt-F1, hasta Alt-F9. Por defecto un "getty" estándar basado en caracteres va a correr en la pantalla 1 (SCREEN_01 en el archivo lts.conf ). También, si no se especifica nada en el archivo lts.conf , una script de pantalla ldm va a ser ejecutado en SCREEN_07. El LTSP Display Manager (ldm) es el administrador de login por defecto para LTSP. Si SCREEN_07 (que es la terminal que corresponde al entorno grafico) esta cargada con un valor ldm, o startx, entonces el sistema X Windows será ejecutado, brindándole una interfaz gráfica de usuario. Por defecto el servidor Xorg va a testear la tarjeta, va a crear un archivo /etc/X11/xorg.conf con valores por defecto en el disco ram de la terminal y va a comenzar xorg con esa configuración. El servidor X va a crear un túnel cifrado ssh hacia el servidor, en caso de ldm, o una consulta XDMCP al servidor LTSP, en el caso de startx. Para cualquiera de los casos se va a ver una caja de login en la terminal. Herramienta de Trabajo Para este laboratorio se utilizo un equipo con sistema operativo Ubuntu 9.04, este funcionara como servidor LTSP, además tiene dos interfaces de red (una cableada y otra inalámbrica). Por la interfaz cableada se conectan los clientes LTSP. Por la interfaz inalámbrica se dará salida a internet a los clientes Para los clientes se utilizaron maquinas que se tenían en el área de sistemas donde laboro.
  • 5. Paquetes Necesarios Para implementar LTSP se necesita una serie de paquetes, pero como en Linux esto de la descarga es tan fácil utilizando APT, lo haremos de la siguiente forma. sudo apt-get update Actualizamos la lista de paquetes, luego. sudo apt-get install ltsp-server ltsp-server-standalone ltsp-server: Este paquete contiene las herramientas para trabajar con el servidor LTSP. ltsp-server-standalone: Este paquete contiene las herramientas para construir el entorno de los clientes livianos “Thinclients”. nfs-kernel-server: El cliente lo utilizara para montar su propio sistema de archivos. Los demas paquetes mencionados como tftp, dhcp, etc son descargados con el paquetes ltsp-server-standalone Cuando la descarga haya finalizado, las carpetas que nos ocuparan son /var/lib/tftpboot/ltsp y /opt/ltsp. La primera contiene la imagen del kernel que sera enviada por tftp a los clientes y la segunda el sistema de archivos que sera montado en los clientes. Empecemos!!! Vamos a empezar por activar el demonio del servidor tftp de la siguiente forma, con nuestro editor de texto vamos al archivo sudo vim /etc/default/tftpd-hpa. El archivo sera igual o parecido a este. #Defaults for tftpd-hpa RUN_DAEMON="no" OPTIONS="-l -s /var/lib/tftpboot" y cambiamos el valor de RUN_DAEMOS=“no” a RUN_DAEMON=”yes”, guardamos y reiniciamos el servidor tftp /etc/init.d/tftpd-hpa restart. Continuamos ahora creando la imagen del kernel que sera enviada a los clientes por medio de tftp. Ejecutamos el siguiente comando ltsp-build-client --arch i386, el --arch es para especificar la arquitectura del kernel que se va a crear. Nota: En este paso dependemos de nuestra conexión a internet (ancho de banda) ya que descargara todos los componentes necesarios desde los repositorios que estén en internet. Si todo ha salido bien tendremos un mensaje como este “información: la instalación del cliente LTSP se completó satisfactoriamente”
  • 6. Ya con este paso finalizado, ahora podemos ver que en la carpeta /opt/ltsp/i386 hay un sistema de archivos creado el cual sera usado por nuestros clientes. Ahora pasaremos a la configuración del servidor NFS para que los clientes puedan acceder a los archivos y monten el sistema de archivos, con nuestro editor de texto favorito editamos el archivo sudo vim /etc/exports. El archivo exports sera igual o similar a este. # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) y agregamos la siguiente linea justo debajo del ultimo comentario /opt/ltsp/i386 (ro,no_root_squash,async,no_subtree_check), a continuación ejecutamos este comando sudo exportfs -ra, para que nfs vuelva a leer el archivo exports y toma los cambios que hemos realizado. Hasta el momento tenemos configurado el servidor tftp, creamos el ambiente del cliente con ltsp-build-client y configuramos nuestro servidor nfs, ahora pasamos a la configuración del que hará posible que el cliente arranque por medio de la red y es nuestro servidor dhcp. Cuando descargamos el paquete ltsp-server-standalone este descarga el servidor dhcp (dhcp3-server) a su vez descarga un segundo archivo de configuración dhcpd.conf que es el ejemplo para configuración de los clientes livianos, este archivo se encuentra en /etc/ltsp/dhcpd.conf y sera igual o similar a este.
  • 7. # # Default LTSP dhcpd.conf config file. # authoritative; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.20 192.168.0.250; option domain-name "example.com"; option domain-name-servers 192.168.0.1; option broadcast-address 192.168.0.255; option routers 192.168.0.1; # next-server 192.168.0.1; # get-lease-hostnames true; option subnet-mask 255.255.255.0; option root-path "/opt/ltsp/i386"; if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" { filename "/ltsp/i386/pxelinux.0"; } else { filename "/ltsp/i386/nbi.img"; } } Descomentamos las dos lineas resaltadas y empezamos a definir los parámetros según sea nuestro criterio. Nota: el parámetro next-server indica cual es el servidor tftp, si tuvieras este servidor en otra maquina, coloca aquí su ip. Reemplazo el archivo original de configuración del servidor dhcp por el que acabe de editar y reinicio el servidor /etc/init/dhcp3 restart.
  • 8. Ahora pasamos a la configuración de los clientes, el archivo lts.conf que se encuentra en /opt/ltsp/i386/usr/share/doc/ltsp-client-core/examples es el que contiene las opciones y características que tendrán los clientes, así que movemos o copiamos este archivo a la carpeta /var/lib/tftboot/ltsp/i386/ y comenzamos a adaptarlo según nuestra necesidad. Para el caso nuestro se realizaron las siguientes adaptaciones para nuestros clientes. [default] X_COLOR_DEPTH=16 #XSERVER = vesa #X_MODE_0 = 1024x768 LOCALDEV=True SOUND=True SYSLOG_HOST=server XKBLAYOUT=es SCREEN_07=ldm SERVER =192.168.2.25 ALLOW_SHUTDOWN=true [00:d0:b7:c0:06:71] LDM_USERNAME=usuario1 LDM_PASSWORD=museo1 SCREEN_02 = shell X_RAMPERC = 80 SOUND=TRUE LOCALDEV=TRUE [00:d0:b7:e5:98:59] LDM_USERNAME=usuario2 LDM_PASSWORD=museo1 SCREEN_02 = shell X_RAMPERC = 80 SOUND=TRUE LOCALDEV=TRUE
  • 9. [00:d0:b7:e5:9d:c8] LDM_USERNAME=usuario3 LDM_PASSWORD=museo1 SCREEN_02 = shell X_RAMPERC = 80 SOUND=TRUE LOCALDEV=TRUE Bueno vamos a explicar las opciones aquí utilizadas, además en la pagina oficial del proyecto están estas y otras muy bien documentadas. Las direcciones MAC se pueden utilizar para instruir a ltsp para que entregue una configuración especifica a dicha maquina con esa mac (súper interesante... no!) La opción [Default] aplicara para todos los clientes en general. X_COLOR_DEPTH=16: Numero de bits para la profundidad de color, el valor puede ser 8,15,16,24,32. SERVER: Define quien es el servidor LTSP XSERVER: Define el servidor X que correrá en el cliente. X_MODE_0: La resolución por defecto que tendrá el cliente. LOCALDEV: Que el cliente pueda utilizar los dispositivos de almacenamiento local. SOUND: Habilita el demonio de sonido en el cliente. SYSLOG_HOST: Si el valor este es “true” enviara los logs de los clientes a la maquina que este especificada en la variable “SERVER”. XKBLAYOUT: Diseño del teclado, elegimos el idioma de nuestro teclado. Para mayor información consulte su XORG. Con estas opciones los clientes funcionaron perfecto y sin problemas, en la pagina del proyecto se encuentran muchas mas opciones interesantes, así que solo queda es leer y probar. Nota: Cada vez que modifiquemos este archivo se debe actualizar la imagen que se creo con lts-build-client para que los cambios apliquen y no surjan problemas, esto lo hacemos de la siguiente manera sudo ltsp-update-image Con esto ya solo queda guardar el archivo y encender uno de los clientes para empezar a depurar errores.
  • 10. PROBLEMAS DURANTE LA IMPLEMENTACIÓN – Cuando se inicio pro primera vez el cliente presento un problema con la memoria RAM (no se copiaban los archivos en ella) y esto se debió a que el cliente tenia dos módulos de ram con diferente bus y esto ocasionada por decirlo de alguna manera diferentes velocidades de procesamiento. Entonces la solución es quitar un modulo y funcionar con el otro o colocar el otro modulo con el mismo bus. – Las opciones que se encuentran comentadas en el archivo lts.conf en la sección Default se deben a que cuando inicia la terminal no tomaba la resolución 1024x768 y solo nos daba un máximo de resolución de 800x600 pero no era suficiente para lo que queríamos mostrar, entonces el compañero Fernando Castro a.k.a Kleper me dijo que comentara las lineas que ubuntu siempre se configuraba “solo” y que con estos parámetros lo estaríamos confundiendo, procedí a comentarlas y perfecto nos tomaba una resolución máxima de 1440x900.
  • 11. CONCLUSIONES En el mundo de GNU/LINUX muchas son las soluciones que se pueden encontrar para la reutilización de maquinas con pocas prestaciones y recursos limitados para un fin especifico. Con la implementación de LTSP me doy cuenta que esta comunidad de desarrolladores de software libre realizan un estupendo trabajo, desinteresadamente y con una calidad de producto final impresionante. En la pagina oficial del proyecto podemos encontrar cada uno de los detalles de como funciona, que podemos hacer con este software, una wiki con excelente documentación y un sin fin de ayuda para la implementación. La implementación es sencilla y altamente personalizable, además de que cuenta con muy pocos archivos de configuración y hace muy fácil de trabajar tanto la configuración del servidor como la de los clientes. También sus opciones para utilizar en los archivos de configuración son fáciles de entender y así poder ajustar un cliente para un buen funcionamiento y aprovechamiento del recurso. Para negocios y empresas es una solución muy rentable ya que con muy poco pueden implementar soluciones por ejemplo para sus clientes, seria muy agradable poder consultar el catalogo de productos con los cuales usted cuenta o no cuenta y esto lo puede lograr con una maquina de pocos recursos y ltsp.
  • 12. ENLACES RELACIONADOS Oficiales Pagina Oficial del Proyecto http://www.ltsp.org/ Wiki del Proyecto http://wiki.ltsp.org/twiki/bin/view/Ltsp/WebHome Documentación Oficial http://wiki.ltsp.org/twiki/bin/view/Ltsp/Documentation Soporte del proyecto en Español http://groups.yahoo.com/group/ltsp-es-reloaded No Oficiales http://es.wikibooks.org/wiki/Servidor_Terminal_Linux http://tuxpuc.pucp.edu.pe/content/view/451/12/ http://el64.blogspot.com/2007/08/cmo-instalar-ltsp-en-feisty-terminales.html http://doc.ubuntu.com/edubuntu/edubuntu/handbook/C/customizing-thin-client. html Opciones para el Archivo LTS.CONF http://wiki.ltsp.org/twiki/bin/view/Ltsp/LtsConf#XkbLayout http://www.ltsp.org/~sbalneav/LTSPManual.html#ldm-variables Otros DHCPD http://es.wikipedia.org/wiki/DHCP NFS http://es.wikipedia.org/wiki/NFS TFTP http://es.wikipedia.org/wiki/TFTP