Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
Desktop
https://help.ubuntu.com/community/UbuntuLTSP
https://help.ubuntu.com/community/UbuntuLTSP/LTSPQuickInstall
http://doc.ubuntu.com/edubuntu/edubuntu/handbook/C/
http://www.havetheknowhow.com/Configure-the-server/Install-LTSP.html
Introducción
Vamos a montar el siguiente escenario de red .
Explicación de la red :
Tendremos una subnet interna para los Thin Clients, que conectan a la interfaz Eth0 del
servidor.
La interfaz eth1 del servidor enlaza con la Red Local, con salida a Internet
Para poder pasar paquetes de la eth0 a la eth1, tendremos que activar el IP FORWARDING
(routing interno) en el servidor
Los ThinClients se configuraran a partir del servicio DHCP del servidor, asignandole una IP
interna de la red 192.168.110.0/24.
En los ThinClient algunas aplicaciones, por ejemplo Firefox, se ejecutarán localmente, saliendo
por tanto con su IP interna. Para ello necesitaremos dos cosas :
- Activar el routing en el servidor y configurar por dhcp el gateway de los clientes, que será la IP
del servidor
Lo vamos a montar utilizando máquinas virtuales VMWare Player. Por tanto , la subred de
ThinClients la simularemos asigando la interfaz ETH0 de la VM del servidor y las interfaces de
los clientes al LAN_SEGMENT "LAN_ThinClients"
La interfaz ETH1 de la VM del servidor será tipo BRIDGE, para salir por la tarjeta de red física a
la red local.
Los ThinCLients
Crearemos dos VMs para simular dos Thin Clients.
Crearemos dos configuraciones distintas para los ThinClients. Configuraremos el servidor LTSP
para que asigne una configuración u otra según la MAC del cliente.
Las sesiones de usuario de los ThinClient se validarán contra un servidor de dominio Active
Directory.
Al iniciar sesión , los clientes tendrán montada automáticamente una carpeta compartida .
Servidor LTSP
Será un servidor LTSP Standalone. Es decir, incluye su servicio DHCP, LDM, NBD server, TFTP,
etc.
Crearemos dos chroot ( y sus correspondientes imágenes), para dos tipos de clientes distintos
* En la VM del servidor
- Configurar la primera tarjeta de red . Asignarla al mismo segmento de red anterior. Esta será
por la que accederán los Thin Clients
Deberá quedar así, adaptando las IPs y MACs que corresponda según nuestra red
auto eth1
iface eth1 inet static
address 192.168.129.50
netmask 255.255.255.0
network 192.168.129.0
broadcast 192.168.129.255
gateway 192.168.129.1
dns-nameservers IP_DNS_SERVIDOR_WINDOWS_DC IP_DNS_DE_LA_RED
dns-search curso.local
La línea "up iptables-restore < /etc/ltsp/nat" carga la configuración de NAT con ip tables, para
permitir a las aplicaciones locales al ThinClient salir a la red externa. El fichero /etc/ltsp/nat se
genera en el paso de más adelante
ip addr list
ip route list
ifconfig
netstat -r
net.ipv4.ip_forward = 1
Activar NAT para permitir a los paquetes de la red interna ThinClient salir a la red exterior
https://help.ubuntu.com/community/UbuntuLTSP/ThinClientHowtoNAT
Instalar LTSP
Instalar el paquete de LTSP.
En nuestro caso el paquete es ltsp-server-standalone. Incluye los servicios necesarios (ndb,
dhcp, nfs, tftp)
Al haber instalado el paquete ltsp-server-standalone, lleva su propia configurac ión del DHCP
en
/etc/ltsp/dhcpd.conf
/etc/dhcp/dhcpd.conf
authoritative;
host ThinClient2 {
hardware ethernet A0:0C:29:0D:46:8B;
fixed-address 192.168.110.21;
option host-name "ThinClient2";
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.110.255;
option routers 192.168.110.1;
option domain-name "curso.local";
option domain-name-servers 192.168.128.151;
option root-path "/opt/ltsp/i386-personalizado";
if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
filename "/ltsp/i386/pxelinux.0";
}
else{
filename "/ltsp/i386/nbi.img";
}
}
En nuestro caso ,
- uno de los ThinClient tomará el chroot y la imagen de su S.O. por defecto de /opt/ltsp/i386, y
/opt/ltsp/images/i386.img
En nuestro caso, a todos los clientes de 32bits le vamos a enviar el mismo kernel. Las
diferencias de configuración para cada cliente estarán en la imagen de chroot.
Y las configuraciones personalizadas para cada cliente las podemos configurar en el mismo
lts.conf, creando distintos grupos de opciones por MAC. Lo veremos más adelante.
Para el segundo ThinClient, la opción " hardware ethernet" debe indicar la MAC de ese cliente.
sudo rm /etc/dhcp/dhcpd.conf
sudo ln -s /etc/ltsp/dhcpd.conf /etc/dhcp/dhcpd.conf
- Actualizar claves ssh de LTSP para que el servidor ssh registre el cambio
sudo ltsp-update-sshkeys
Si se utiliza NFS para servir la imagen al cliente, el cliente montará por NFS el chroot
directamente desde la carpeta /opt/lttsp/i386 (o amd64) , que previamente estará exportada
en el servidor.
Le puedo decir que coja la lista de repositorios de paquetes del propio servidor
Pero aun así, los paquetes se los descarga de los repositorios de Internet.
- Descargar todos los paquetes necesarios ( desde el mirror por defecto. Por defecto los
repositorios Ubuntu en Internet)
Al arrancar , al no tener S.O. en el disco local , intentará un arranque por red, con PXE.
El DHCP le enviará una IP y los datos para reclamar una imagen de arranque inicial, por TFTP
desde el servidor.
A partir de ahí ya podrá acceder a la imagen chroot (por NBD, o por NFS) , y arrancar el S.O.
básico en el Cliente.
En la configuración de LTSP, lo primero que hará el cliente es iniciar una sesión XDMCP en el
servidor.
Para hacer que una aplicación se ejecute automáticamente de forma local en el thinclient, en
lugar de correr directamente en el servidor, tendremos que hacer tres cambios en el chroot:
• Colocar los ficheros .desktop de las aplicaciones que vamos a ejecutar de forma local en
el directorio: /opt/ltsp/i386/usr/share/applications/
• Hacer que se sustituyan en el menú del thinclient los accesos directos de las aplicaciones
del servidor por las aplicaciones que queremos correr de forma local, modificando lo
siguiente en el archivo /opt/ltsp/i386/etc/lts.conf:
LOCAL_APPS_MENU = True
LOCAL_APPS_MENU_ITEMS = iceweasel, google-chrome, firefox
En nuestro caso, para no terner que volver a descargar todos los paquetes , vamos a copiar el
chroot que ya tenemos
cd /opt/ltsp
sudo cp -rp i386 i386-personalizado
ls -lt /opt/ltsp/i386-personalizado/usr/share/applications/firefox.desktop
También habrá que hacerlo cuando, por lo que sea, cambiemos la IP del servidor de terminales.
Reiniciar servicio
sudo vi /var/lib/tftpboot/ltsp/i386/lts.conf
lts.conf
[Default]
LOCAL_APPS = False
[A0:0C:29:0D:46:8B]
LOCAL_APPS = True
LOCAL_APPS_MENU = True
LOCAL_APPS_MENU_ITEMS = firefox
Con las dos últimas opciones, en el menú del cliente aparecerá el icono para lanzar el Firefox
local
ltsp-localapps xterm
Para ello debe haber instalado un entorno Desktop en el cliente local, y añadir en lts.conf
LTSP_FATCLIENT=True
Hay muchas más opciones con las que podemos configurar el cliente.
Ver en el servidor
man lts.conf
https://readme.phys.ethz.ch/documentation/setting_up_an_ltsp_server_for_diskless_clients/
/opt/ltsp/i386/usr/share/ltsp/screen.d
- En /var/lib/tftpboot/ltsp/i386/lts.conf
[SCREEN_07 = kiosk]
- Configuración manual
- Instalar y configurar módulos PAM
- Configurar /etc/nsswitch.conf
- Configurar Kerberos
- Con Samba (Samba/Kerberos, Winbind)
- Con utilidad específica : Power Broker Identity Services Open Edition
Las máquinas implicadas ( el propio servidor, el AD) deben poder resolverse por nombre. Las
tendríamos que tener en nuestro servidor DNS.
De momento aquí, los vamos a incluir en nuestro /etc/hosts
En /etc/hosts, añadir
En /etc/resolv.conf
nameserver 192.168.1.WWW
nameserver 192.168.128.151
search curso.local
sudo ./pbis-open-8.3.0.3287.linux.x86_64.deb.sh
El paquete PBIS instala librerías y configuraciones para PAM y NSS. Hay que reiniciar el servidor
para que tome las nuevas librerías
sudo reboot
Por una incompatibilidad, hay que desinstalar el siguiente paquete
Es recomendable reiniciar el servidor para asegurar que las aplicaciones reconocen la nueva
configuración
sudo reboot
Comprobar la integración
/opt/pbis/bin/get-dc-name curso.local
/opt/pbis/bin/enum-users
/opt/pbis/bin/enum-groups
ls -lt /home
su – curso3
Contraseña : XXXXX.00
ls -lta /home/local/CURSO/curso3
Instalar libpam-mount:
Editar /etc/security/pam_mount.conf.xml
Este fichero tiene la configuración principal de los volúmenes a montar con pam_mount.
Habilitamos para que podamos tener configuraciones de montaje distintas para cada usuario.
Para ello eliminamos las etiquetas (<!-- y -->) alrededor de la sección <luserconf
name=".pam_mount.conf.xml" />
Además, más adelante al definir el punto de montaje, vamos a necesitar definir las opciones
"user", "cruid" y "sec", por lo que las añadimos a "mntoptions", quedando así :
<mntoptions
allow="user,cruid,sec,nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,all
ow_other" />
Por ejemplo, como usuario "curso3" ( el usuario/password que monta esta carpeta remota
debe tener privilegios de acceso a esa carpeta)
su - curso3
gedit ~/.pam_mount.conf.xml
Añadir
La opción "sec=krb5" es para que la autenticación del montaje se haga por Kerberos , no por
NTLM. Si no ponemos esta opción el montaje fallará , ya que la autenticación contra el
ActiveDirectory por defecto será NTLM, con lo que necesita pasarle el usuario/password. Y al ir
toda la sesión por el tunel SSH, y dado que SSH no acepta que se le paso el password como
parámetro, el Active Directoiry rechazará la autenticación.
Las opciones "cruid" y "user" son para que Kerberos encuentre correctamente el ticket
kerberos correspondiente.
/etc/security/limits.conf
/etc/security/limits.d
The limits in /etc/security/limits.conf are implemented using ulimit, which are *per process*.
So if you get a 10 MB limit, "ls" will probably run, but OOo and Firefox probably won't.
There's also nothing keeping a user from starting a bunch of processes, each individually under
the limits, but together impacting system performance.
On Linux, you can setup disk quota using one of the following methods:
On the user or group based quota, following are three important factors to consider:
•Hard limit – For example, if you specify 2GB as hard limit, user will not be able to create
new files after 2GB
•Soft limit – For example, if you specify 1GB as soft limit, user will get a warning message
“disk quota exceeded”, once they reach 1GB limit. But, they’ll still be able to create new
files until they reach the hard limit
•Grace Period – For example, if you specify 10 days as a grace period, after user reach their
hard limit, they would be allowed additional 10 days to create new files. In that time period,
they should try to get back to the quota limit.
1. Enable quota check on filesystem
First, you should specify which filesystem are allowed for quota check.
Modify the /etc/fstab, and add the keyword usrquota and grpquota to the corresponding
filesystem that you would like to monitor.
The following example indicates that both user and group quota check is enabled on /home
filesystem
# cat /etc/fstab
LABEL=/home /home ext2 defaults,usrquota,grpquota 1 2
# quotacheck -avug
quotacheck: Scanning /dev/sda3 [/home] done
quotacheck: Checked 5182 directories and 31566 files
quotacheck: Old file not found.
quotacheck: Old file not found.
# ls -l /home/
-rw------- 1 root root 11264 Jun 21 14:49 aquota.user
-rw------- 1 root root 11264 Jun 21 14:49 aquota.group
For example, to change the disk quota for user ‘ramesh’, use edquota command, which will
open the soft, hard limit values in an editor as shown below.
# edquota ramesh
Disk quotas for user ramesh (uid 500):
Filesystem blocks soft hard inodes soft
hard
/dev/sda3 1419352 0 0 1686 0
0
Once the edquota command opens the quota settings for the specific user in a editor, you can
set the following limits:
•soft and hard limit for disk quota size for the particular user.
•soft and hard limit for the total number of inodes that are allowed for the particular user.
4. Report the disk quota usage for users and group using repquota
Use the repquota command as shown below to report the disk quota usage for the users and
groups.
# repquota /home
*** Report for user quotas on device /dev/sda3
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 566488 0 0 5401 0 0
nobody -- 1448 0 0 30 0 0
ramesh -- 1419352 0 0 1686 0 0
john -- 26604 0 0 172 0 0
# cat /etc/cron.daily/quotacheck
quotacheck -avug
Linux Cgroups
If you want to limit the total amount of memory or CPU a user uses you want to use cgroups.
https://en.wikipedia.org/wiki/Cgroups
http://frank2.net/cgroups-ubuntu-14-04/
Deps:
cgconfigparser is the program that needs to run in order to set up the configuration put in
cgconfig.conf.
This program does not start at startup, but it should (create a init script or place in cgroup-lite config
script, a sample is located in this post)
cgroup-lite service needs to run for cgconfigparser to run correctly. cgroup-lite is responsible for
mounting the cgroups.
In /etc/cgconfig.conf:
group memlimit {
memory {
memory.limit_in_bytes = 1G;
memory.memsw.limit_in_bytes = 1G;
}
}
This creates a cgroup that has a max memory limit of 1GB y adicional swap of 1GB
In /etc/cgrules.conf:
This will cause all processes run by curso1 to be run inside the memlimit cgroups created in
cgconfig.conf.
cgrulesengd needs to run in order to enforce cgroups policy, it is not started automatically.
ps -o cgroup 13820
cat /proc/13820/cgroup
10809