Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


XDMCP-Zugang

Wake-On-LAN ] Power Off ] [ XDMCP-Zugang ] VNC ] Sun-Java ] Ajaxterm ] Scann-Server ] webCDwriter ] Relaiskarte (parallel) ] Relaiskarte (seriell) ] UPS ] LIRC ] Clonezilla ] Subversion ] SMS unter Linux ]


Das 'X Display Manager Control Protocol' oder kurz 'XDMCP' wird für die Kommunikation zwischen X-Terminals und Rechnern benutzt, die unter Unix/Linux arbeiten. Es handelt sich um ein Verfahren zur Anmeldung von X-Terminals bei Remote-Systemen. Es ist so möglich, eine gesamte grafische Oberflache (z.B.: KDE oder Gnome) auf einen  entsprechenden Client umzuleiten.

Im Folgenden wird gezeigt, wie ein Server unter Debian zu konfigurieren ist, sodass mit einem entsprechenden X-Client remote über das XDMCP darauf zugegriffen kann. Als Clients werden Software-Lösungen unter Linux und Windows angesprochen.

XDMCP-Server

Damit ein Linux-System als XDMCP-Server fungieren kann, ist es notwendig, dass auf dem Server ein X-System mit einer grafischen Oberflache (z.B.: KDE oder Gnome) installiert und konfiguriert ist. Unter Debian-Linux bedeutet dass, es sollte neben der notwendigen Basis-Installation die 'Desktop-Umgebung' vorhanden sein. D.h. nach dem Start des Rechners sollte lokal eine grafische Oberflache angeboten werden. Dieses kann gegebenenfalls bequem mittels des 'Konfigurationsmenü des Grundsystems' nachgeholt werden (Aufruf auf der Komandozeile: 'base-config').
Auf dem XDMCP-Server sind einige Anpassungsschritte notwendig, damit die grafische Anmeldung über das Netz erfolgen kann, ohne dass gleich lokal die grafische Oberfläche gestartet wird. Die Art der Anpassungen sind davon abhängig welcher Display-Manager verwendet wird. Ein Display-Manager kümmert sich um die Anmeldung am System, unter Linux stehen mehrere Display-Manager zur Verfügung, die bekanntesten sind:

  • 'xdm', der Standard im X-System
  • 'kdm', der Display Manager von KDE
  • 'gdm', der Display Manager von Gnome

Auf einem System können auch mehrere unterschiedliche Display-Manger installiert sein, von jedoch nur einer aktiv sein kann. Ein Display-Manager kann unter Debian mittels: 'apt-get install <Display-Manager>' hinzugefügt werden, mögliche Display-Manager sind z.B.: 'kdm', 'gdm' oder 'xdm'. Falls schon ein oder mehrere Display-Manager vorhanden sind, erfolget ein Dialog nach dem zu aktivierenden Display-Manager. Ein nachträgliches Umschalten des Display-Manager kann mit dem Kommando: 'dpkg-reconfigure <Display-Manager>' geschehen.

Welches der aktive Displaymanager ist wird in der Datei: '/etc/X11/default-display-manager' nach gehalten; z.B. für XDM:

/etc/X11/default-display-manager

/usr/bin/X11/xdm

Im Folgenden werden die notwendigen Änderungen, je nach installierten Display-Manager, für den XDMCP-Zugang vorgestellt:

xdm - Display-Manager

Ist XDM installiert, so ist das '-nolisten tcp' in der Datei: '/etc/X11/xdm/Xservers' zu entfernen:

/etc/X11/xdm/Xservers (ca. Zeile: 35)

...
# Examples for multiple local X displays:
# :0 local /usr/X11R6/bin/X :0 vt9 -depth 15 -nolisten tcp
# :1 local /usr/X11R6/bin/X :1 vt10 -depth 8 -nolisten tcp
:0 local /usr/X11R6/bin/X vt7 -dpi 100

Damit sich Clients anmelden können ist die Datei: '/etc/X11/xdm/Xaccess' anzupassen:

/etc/X11/xdm/Xaccess (ca. Zeile: 48/66)

...

# In all cases, xdm uses the first entry which matches the terminal;
# for IndirectQuery messages only entries with right hand sides can
# match, for Direct and Broadcast Query messages, only entries without
# right hand sides can match.
#

* #any host can get a login window

...
...
# The nicest way to run the chooser is to just ask it to broadcast
# requests to the network - that way new hosts show up automatically.
# Sometimes, however, the chooser can't figure out how to broadcast,
# so this may not work in all environments.
#

* CHOOSER BROADCAST #any indirect host can get a chooser
...

Weiterhin sollte in der Datei das 'CHOOSER BROADCAST' für jeden Client aktiviert werden. Ein 'Chooser' präsentiert dem Benutzer ein Auswahlmenü, welches die zur Verfügung stehenden Rechner auflistet, die ein grafisches Login anbieten. Der 'Chooser' wird bei einen sogenannten 'indirect query' aktiviert.

kdm - Display-Manager

Ist KDE aktiv, so ist in der Datei: '/etc/kde3/kdm/Xservers' ebenfalls das '-nolisten tcp' zu entfernen:

/etc/kde3/kdm/Xservers (ca. Zeile: 13)

# Xservers - local X-server list
#
# This file should contain an entry to start the server on the
# local display; if you have more than one display (not screen),
# you can add entries to the list (one per line).
# If you also have some X terminals connected which do not support XDMCP,
# you can add them here as well; you will want to leave those terminals
# on and connected to the network, else kdm will have a tougher time
# managing them. Each X terminal line should look like:
# XTerminalName:0 foreign
#

:0 local@tty1 /usr/X11R6/bin/X
#:1 local@tty2 reserve /usr/X11R6/bin/X -nolisten tcp :1
#:2 local@tty3 reserve /usr/X11R6/bin/X -nolisten tcp :2
#:3 local@tty4 reserve /usr/X11R6/bin/X -nolisten tcp :3
#:4 local@tty5 reserve /usr/X11R6/bin/X -nolisten tcp :4


### Don't change these two lines; they are hints for genkdmconf. ###
### Version 1.99 ###

Weiterhin ist in der Datei: '/etc/kde3/kdm/kderc' in der der Sektion: 'Xdmcp' 'Enable=true' zu setzen:

Auszug aus /etc/kde3/kdm/kdmrc (ca. Zeile: 96)

...
[Xdmcp]
# Whether KDM should listen to incoming XDMCP requests.
# Default is true
Enable=true
...

Damit ein Zugriff fremder Clients gewährleistet ist, ist diese in der Datei: '/etc/kde3/kdm/Xaccess' freizuschalten:

Auszug aus /etc/kde3/kdm/Xaccess (ca. Zeile: 38)

...
# In all cases, xdm uses the first entry which matches the terminal;
# for IndirectQuery messages only entries with right hand sides can
# match, for Direct and Broadcast Query messages, only entries without
# right hand sides can match.
#

* #any host can get a login window
...
...
#
# The nicest way to run the chooser is to just ask it to broadcast
# requests to the network - that way new hosts show up automatically.
# Sometimes, however, the chooser can't figure out how to broadcast,
# so this may not work in all environments.
#

* CHOOSER BROADCAST #any indirect host can get a chooser
...

Auch kann der 'Chooser' in dieser Datei freigegeben werden.

gdm - Display-Manager

Beim Gnome-Display-Manager ist in der Datei: '/etc/X11/xinit/xserverrc' das '-nolisten tcp' zu entfernen:

/etc/X11/xinit/xserverrc (ca. Zeile: 2)

#!/bin/sh
exec /usr/bin/X11/X -dpi 100 debian:/etc/X11/xinit

Damit XDMCP aktiviert wir, ist in der Datei: '/etc/X11/gdm/gdm.conf' dieses in der Sektion '[xdmcp]' zu aktivieren:

Auszug aus /etc/X11/gdm/gdm.conf (ca. Zeile: 201)

...
[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
...

'Enable' sollte den Wert 'true' haben.

X-Terminal unter Linux

Für einen X-Terminal unter Debian-Linux brauch nur die Basis-Installation und das X-Windows-System installiert vorhanden sein.
Normalerweise wird bei einen grafischen System unter Linux der Display-Manager durch das Startscript: '/etc/init.d/<Display-Manger>' beim Systemstart aufgerufen. Soll jedoch eine grafische Verbindung auf einem fremden System erfolgen, so ist der eigentliche X-Server direkt aufzurufen. Zum direkten Aufruf des X-Server kommen drei Methoden in Betracht: 'direct', 'indirect' und 'broadcast'.

Bei der direct-Methode wird direkt ein Rechner im Netzwerk angesprochen, um sich einzuloggen. Der Aufruf ist z.B.:

X :0.0 -query <HOSTNAME>

Es wird ein 'Server 0' gestartet, die gesamte Konfiguration wird jedoch vom Display-Manager des angesprochenen Hosts erledigt.

Bei der indirect-Methode wird ein Rechner nach einer Liste von bekannten Servern, die das XDMCP-Protokoll unterstützen gefragt. Der befragte Rechner startet jetzt diese Auswahlliste, den so genannten 'Chooser' und der aufrufende Rechner kann sich aus dieser Liste aussuchen, wo er sich einloggen möchte. Das Kommando hierzu lautet:

X :0.0 -indirect <HOSTNAME>

Bei der letzten Methode wird ein 'broadcast' ins lokale Netz ausgesandt, um einen Rechner oder 'Chooser' zu bekommen. In diesem Fall wird kein Rechnername angegeben, sondern einfach nur ein:

X :0.0 -broadcast

Statt dem ersten zu startenden Server kann bei jedem der drei Methoden auch ein zweiter, dritter, usw. gestartet werden, was dann statt der Angabe ':0.0' entsprechend die Angaben ':1.0, 2.0' usw. erfordert.

Möchte man das System grundsätzlich als X-Terminal starten, empfiehlt sich hierzu ein entsprechendes Startscript zu verwenden:

Auszug aus /etc/init.d/xterm

#! /bin/sh

set -e

case "$1" in
  start)
    start-stop-daemon --start --verbose --pidfile /var/run/xterm.pid --exec /usr/bin/X11/X -- -quiet -query 192.168.1.10 &
    ;;
  stop)
    start-stop-daemon --stop --verbose --pidfile /var/run/xterm.pid --exec /usr/bin/X11/X
    ;;
  reload)
    # echo "Reloading $NAME configuration files"
    # start-stop-daemon --stop --signal 1 --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
    ;;
  *)
    # echo "Usage: /etc/init.d/$NAME {start|stop|reload}"
    echo "Usage: /etc/init.d/xterm {start|stop}"
    exit 1
    ;;
esac

exit 0

Das Skript ist im Verzeichnis: '/etc/init.d/' abzulegen und mit 'chmod 775' zu versehen. Weiterhin ist der zu kontaktierende XDMCP-Server anzupassen (siehe gelbe Markierung). Der Start des Skriptes kann bequem mit den Debian-Tool: 'rrconf' eingetragen werden, dabei sollten auch der Start von vorhandenen Display-Managern unterbunden werden.

X-Terminal unter Windows

Auch unter Windows ist es problemlos möglich mittels X-Terminal als Software, der einen Zugriff auf ein X-Server zu realisieren. Bekannte kommerzielle Lösungen sind z.B. 'X-Win32' von der Firma 'StarNet Communications' oder 'Pradeep Nambiar

  

Nach dem Start ist zunächst das gewünschte Netz-Interface festzulegen, der Default-Wert: 'Any' akzeptiert Anfragen von jedem Netz-Interface. Nach der Bestätigung mit 'Select' werden dann XDM-Hosts im Netzwerk gesucht und in der Auswahlliste dargestellt. Das gewünschte XDM-System kann dann mit 'Connect' selektiert werden und die Verbindung sollte dann gegeben sein.

Die Unstellung auf eine deutscher Tastatur kann mittels 'X-Deep/32 Server Options => Input' in Eingabefeld: 'Select Keymap File' durch den Eintrag: 'german.map' erreicht werden. Wichtige Optionen bez. XDMCP können unter 'X-Deep/32 Server Options => XDMCP' abgepasst werden.

Anmerkungen

Zum Suchen von Einträgen der Form: '-nolisten tcp' in den Konfigurationsdateien kann folgendes Kommando verwendet werden:

find /etc/X11 -type f -print0 | xargs -0 grep nolisten

Bei Problemen mit X-Systemen, können mögliche Ursachen unter anderem aus den log-Dateien 'xdm.log' und 'XFree86.0.0.log' im Verzeichnis: '/var/log/' gewonnen werden.

Weitere Infos

Linux XDMCP HOWTO http://www.faqs.org/docs/Linux-HOWTO/XDMCP-HOWTO.html
XDM and X Terminal mini-HOWTO http://www.faqs.org/docs/Linux-mini/XDM-Xterm.html
Homepage: X.org http://www.x.org/
Homepage: XFree86 http://www.xfree86.org/
Manualseiten zu: xdm, gdm man xdm; man gdm
System-Dokumentation: xdm, x-server*, x-window-system-core /usr/share/doc/
Linksammlung X relevanter Seiten http://www.cs.utk.edu/~shuford/terminal/xterm.html
Pradeep Nambiar (X-Deep/32) http://www.pexus.com/index.html
XWinLogon http://www.calcmaster.net/visual-c++/xwinlogon/

Home ] Nach oben ] Wake-On-LAN ] Power Off ] [ XDMCP-Zugang ] VNC ] Sun-Java ] Ajaxterm ] Scann-Server ] webCDwriter ] Relaiskarte (parallel) ] Relaiskarte (seriell) ] UPS ] LIRC ] Clonezilla ] Subversion ] SMS unter Linux ]

letzte Änderung: 01. Januar 2014

 

Copyright © 2004 Norbert Eusterholz