Configurare GDM su una connessione VNC.

Mer, 06/07/2005 - 00:02

Configurare GDM su una connessione VNC.

Inviato da paolo 0 commenti
Introduzione

Questa Guida mostra come configurare il VNC per connettersi ad un Host remoto su una sessione di Login con il GDM (anche XDM e KDM) sfruttando il procollo XDMCP.

Che cos'è VNC?

VNC sta per VIrtual Network Computing. E' un protocollo che ci da la possiblità di ammistrare, una qualsiasi postazione Remota che faccia girare il VNC Server. A differenza di protocolli come Telnet o SSH che prevalentemente Terminal-Based, VNC è in grado di mostrare intere sessioni grafiche. Essendo un protocollo Open e Multipiattaforma troviamo sue implementazione praticamente per ogni sistema operativo, anche sistemi Operativi Commerciali come Windows o Symbian.

Installazione

Dopo questo piccolo escursus su VNC, passiamo ora all'installazione:

apt-get install vnc4server xvncviewer

Come sempre, grazie ad apt-get, l'installazione è molto semplice e veloce.

Configurazione

Ora passiamo alla configurazione del GDM, che puo essere fatta principalmente in 2 modi:

1) Primo metodo: Utilizzando gdmconfig
paolo@paolo:~$ su
Password:
paolo:/home/paolo# gdmconfig

Dalla finestra di configurazione, selezionare la linguetta XDMCP (l'ultima) e selezionare la voce Abilita XDMCP, controllare che la voce Assolvere le richieste indirette non sia selezionata, se nel caso lo fosse disabilitarla.

2) Secondo metodo: Modificare manualmente il file di configurazione di GDM, aprire un terminale:
paolo@paolo:~$ su
Password:
paolo:/home/paolo# gedit /etc/gdm/gdm.conf
Ho utilizzato gedit per comodità, ma nulla vieta ovviamente di poter utlizzare un qualsiasi altro Editor con cui vi trovate più comodi.

Ora dovete modificare la sezione [xdmcp] in questo modo:



[xdmcp]
# Distributions: Ship with this off. It is never a safe thing to leave
# out on the net. Setting up /etc/hosts.allow and /etc/hosts.deny to only
# allow local access is another alternative but not the safest.
# Firewalling port 177 is the safest if you wish to have xdmcp on.
# Read the manual for more notes on the security of XDMCP.
Enable=true
# Honour indirect queries, we run a chooser for these, and then redirect
# the user to the chosen host. Otherwise we just log the user in locally.
#HonorIndirect=true
HonorIndirect=false
# Maximum pending requests
#MaxPending=4
#MaxPendingIndirect=4
# Maximum open XDMCP sessions at any point in time
#MaxSessions=16
# Maximum wait times
#MaxWait=15
#MaxWaitIndirect=15
# How many times can a person log in from a single host. Usually better to
# keep low to fend off DoS attacks by running many logins from a single
# host. This is now set at 2 since if the server crashes then gdm doesn't
# know for some time and wouldn't allow another session.
#DisplaysPerHost=2
# The number of seconds after which a non-responsive session is logged off.
# Better keep this low.
#PingIntervalSeconds=15
# The port. 177 is the standard port so better keep it that way
#Port=177
# Willing script, none is shipped and by default we'll send
# hostname system id. But if you supply something here, the
# output of this script will be sent as status of this host so that
# the chooser can display it. You could for example send load,
# or mail details for some user, or some such.
#Willing=/etc/gdm/Xwilling

Salvate e uscite.

Bene, ora la configurazione del GDM è finita, non resta che configurare inetd

Configurazione INETD

Inetd sta per "Internet Superserver", che si occupa di rimanere in ascolto su determinati "socket" , quando avviene una connessione su uno di questi decide a quale servizio corrisponde invocando un programma per fornirlo.

Quindi dobbiamo istruire inetd su come comportarsi con VNC, per fare questo basta aggiungere alla fine del file /etc/inetd.conf questa riga:

La riga qui deve essere una linea unica e non andare a capo come qui sotto, che ho dovuto spezzare per non allargare troppo il template.

5900 stream tcp nowait nobody /usr/bin/Xvnc Xvnc
-inetd -desktop=Server -query localhost -IdleTimeout 7200
-depth 16 -once securitytypes=none

Ovviamente deve essere fatto da root.

A questo punto le configurazioni sono finite, non resta che avviare tutti i servizi e provare se effetivamente tutto funziona.

Conclusione

Prima di tutto riavviamo il demone inetd:

paolo@paolo:~$ su
Password:
paolo:/home/paolo# /etc/init.d/inetd restart
Restarting internet superserver: inetd.
paolo:/home/paolo#

Ora dobbiamo riavviare il GDM, ma per fare ciò dobbiamo fare un log-out dalla nostra sessione di lavoro.

Ora riavviati tutti i servizi, possiamo testare il funzionamento, facendo 2 prove una da locale e una da remoto.

Apriamo un terminale:

paolo:/home/paolo# xvncviewer
VNC viewer version 3.3.7 - built Sep 25 2004 21:08:37
Copyright (C) 2002-2003 RealVNC Ltd.
Copyright (C) 1994-2000 AT&T Laboratories Cambridge.
See http://www.realvnc.com for information on VNC.

Ora una piccola finestra Dialog ci chiederà di inserire l'indirizzo IP della macchina HOST a cui vogliamo collegarci, siamo in locale quindi basta inserire localhost.

Se tutto è andato come dovrebbe, una finestra con una nuova sessione con il GDM dovrebbe essere visibile.

La stessa procedura potete testarla da remoto, ad esempio da un host della vostra rete LAN, ma in questo caso ovviamente invece di localhost dovete inserire il corretto indirizzo IP.

Hint per server Headless

Leggendo sul Forum di ubuntuforums.org sono venuto a conoscenza di una configurazione particolare del GDM.

Se volessimo implementare questa funzionalità su un server Remoto Headless (senza Tastiera,Mouse,Monitor), avviare una sessione X ed un GDM sarebbe solamente uno spreco di memoria (mi ricorda qualche sistema operativo commerciale), quindi possiamo istruire il GDM ad avviarsi solamente quando effetivamente utilizzato, per fare questo basta editare il file di configurazione /etc/gdm.com in questo modo:

paolo@paolo:~$ su
Password:
paolo:/home/paolo# gedit /etc/gdm/gdm.conf

Ora cerchiamo la sezione [servers] e commentiamo la voce 0=Standard, il risultato deve essere questo:



[servers]
# These are the standard servers. You can add as many you want here
# and they will always be started. Each line must start with a unique
# number and that will be the display number of that server. Usually just
# the 0 server is used.
#0=Standard
#1=Standard

Fine

Questo è tutto, sarebbero da verificare le impostazioni di sicurezza, se qualcuno ha da integrare dei paragrafi ben benvengano. Wink

Per scrivere questo breve Guida ho presto spunto da un HOWTO su ubuntuforums.org, precisamente da qui: http://ubuntuforums.org/showthread.php?s=f9f7825b6e72f7214f90d0d15a522b62&t=42941&page=1&pp=10

Grazie.
Paolo Mainardi.


In: