Linux-Based X Terminals with XDMCP

A tutorial for configuring XDMCP on your network so you can use old equipment, cut down on administration duties and cut costs.

Want to get some use out of your early 90s vintage PC, the one barely powerful enough to run Windows 3.1? Need to outfit a group of users with workstations on a budget? Tired of administering a homogeneous workgroup from afar? Want to introduce Linux to a group of Windows or Mac users with the least amount of resistance? Can't stop tinkering with the oodles of options Linux offers? XDMCP may be for you, even if you answered yes to even one of these questions.

The X display manager control protocol (XDMCP for short) provides a means for a user sitting at one (client) computer running X to communicate with another (server) computer running an X display manager. Once a connection is established, the user can log in and run programs as if the user were sitting at the remote computer. The station where the user sits often is referred to as an X terminal, which essentially is a window into the server. All of the software resides on the server, all of the processing is done on the server's CPU, and all of the files to be accessed reside on the server.

So, for those of you trying to reduce administration hassles, this means you have to administer only the servers. The clients' software remains the same. For those trying to get some use out of old equipment, the speed of the client computers and the size of their hard drives is nearly irrelevant. Even my old Pentium 120 with a CPU upgrade to 180 MHz, 32MB of RAM and a 1GB hard disk provides more than enough muscle to be an X terminal. And, for those trying to outfit a workgroup on a budget, as many as five or six cheap computers can be configured as X terminals for every expensive workstation configured as a server. This would require a fast local network, however. Finally, for those trying to introduce Linux to Windows and Mac users, the only necessary intrusion into their machines is the installation of an X server, and free ones exist.

Basic Configuration

XDMCP is a communication protocol with the power to deliver all the items listed above. A word of caution is in order, however. XDMCP is an inherently insecure protocol. Although technologically nothing is standing in the way of running XDMCP between two computers on the Internet or on an untrusted network, it should never be done. It is too easy for hackers to snoop and grab such critical information as usernames and passwords transmitted over the connection without encryption. XDMCP should be run across only a trusted network. If you need to provide an X terminal across an untrusted network, a slower, slightly less convenient way to do this is mentioned in the security section.

Assuming you have not been scared off, to begin configuring XDMCP, be sure the computer to become the X terminal and the one to become the server are connected over your network. The simplest way to check this is to ping one from the other. If you can ping in both directions, you are ready to begin the configuration.

If you are trying to get some use out of old hardware or trying to outfit a workgroup or lab on a budget, the most powerful machine(s) is your server(s). In the case of bringing the power of Linux to Windows or Mac users, the Linux machine(s) is your server(s). For now, I assume you are configuring only one server. Multiple server set up is discussed later.

The server must be running some display manager, the standard being xdm. Both gdm and kdm, respectively the GNOME and KDE replacements for xdm, are shipped with many distributions and offer preconfigured interfaces that are likely to be sexier than what is offered by xdm. Operationally, they all are capable of providing X terminal services. In fact, if your server boots into a graphical login screen, you already are running a display manager. To find out which one, login and issue the command ps -A | grep dm. The results should be something like

634 ? 00:00:00 cardmgr
857 ? 00:00:00 gdm-binary
889 ? 00:00:00 gdm-binary

which means you are running gdm. If your computer boots into a text login screen, you either can reconfigure it to boot into a graphical login or run a display manager from the command line after logging in as root. This second option is useful only as a temporary solution while you are experimenting, however.

If you intend to use the machine as an XDMCP server, it's best to configure it to run a display manager upon booting. This is done by modifying /etc/inittab. The default run level is set in the line containing initdefault. It should read

id:5:initdefault:

Once you have made this change, you may reboot or issue the command telinit 5 to get a graphical login. Be sure X is set up with a resolution less than or equal to the resolution to be used on the X terminals.

At this point, the impatient may skip the rest of this section and configure an X terminal. If your distribution shipped with XDMCP enabled and configured to serve fonts and no firewall gets in your way, you should have a fully functional XDMCP server. For the patient, simply continue reading and reconfiguring or verifying that XDMCP is configured correctly.

At this point, I assume you are patient or you're back here because your attempt to connect an X terminal failed. One likely reason for a failed connection is the firewall on the server or, worse, somewhere else in your network. To temporarily disable the firewall on the server while you attempt to configure XDMCP, issue the command ipchains -F (or iptables -F) on the server. This eliminates the firewall altogether. To be more selective about your firewall policies, you may try the ipchains (or similar iptables) command

ipchains -A input -p udp -i $extint --dport 177 -j ACCEPT

In addition, make the following changes (if necessary) to the following xdm configuration files. In /etc/X11/xdm/xdm-config, change the line DisplayManager.requestPort: 0 to !DisplayManager.requestPort: 0 (that is, comment it out) so that the server can listen for XDMCP connections. In /etc/X11/xdm/Xaccess, change the line #* # any host can get a login window to * # any host can get a login window so others can access xdm. If you are not using kdm or gdm as your display manager, you are done with this part. However, if you are using kdm, you must edit kdmrc as well. Under Red Hat, this file is located in /etc/X11/xdm. In the [Xdmcp] section, set Enable=true and uncomment the line Port=177. If you are using gdm, you must make the same modifications to gdm.conf, which is located in /etc/X11/gdm under Red Hat.

Configuring an X terminal simply amounts to installing an X server and running an X query. No window manager or desktop environment are necessary. This is why the X terminal's hardware is relatively unimportant, except perhaps the network interface card. There are at least three ways to configure an X terminal to utilize XDMCP. One way is to setup a dummy terminal to run X with no window manager and no applications and then have the XDMCP server push a login screen onto the terminal. This is covered in this useful mini how-to.

I, however, will stick to configuring a not-quite-so-dumb X terminal. This means the X terminal must have some operating system with a configured X server installed. In case of Linux, Windows or Macintosh, an implementation of XFree86 is available free of charge. For Linux, installing XWindows is an option that should be chosen when the OS is installed. For Windows, consider installing Cygwin with the (optional) XFree86base package and dependencies installed. For Mac, consider installing XDarwin, an implementation of the XFree86 server. X servers are available for many other platforms as well, and any one is sufficient to run an X terminal.

Once you have an X server installed, all you need to do is run it with a query option. Three types of queries are available. If you are running only one XDMCP server, it is best to use a direct query. This is done from a non-X shell, not an xterm. If you are running Linux or UNIX, you should configure the machine to boot to a text login. If this already is the case, you are all set. If not, this is done, under Linux, by modifying the default run level in /etc/inittab. The default run level is set on the line containing initdefault. It should read

id:3:initdefault:

Once you have made this change, you may reboot or issue the command telinit 3 to get a text login. Log in as any user and issue the command X -query my.XDMCP.server, where my.XDMCP.server is either the name or IP address of the XDMCP server. If you are running windows and have installed Cygwin, from the Cygwin bash shell, issue the command XWin.exe -query my.XDMCP.server. If you are running Mac OS and have installed XDarwin, from a terminal issue the same command as used under Linux/UNIX. You should see the graphical login window of your XDMCP server. If you are having font issues, consult this excellent how-to to find the necessary server configurations to resolve the issue.

______________________

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

best open source server OS with thin client enviroment

Anonymous's picture

can anyone please suggest which is the best Open source OS to run as server and connecting to it through Thin Clients by XDMCP.

XDMCP in 9.04

Anonymous's picture

Hi
I m having issues in ubuntu 9.04 enterprise server.
I have enabled XDMCP and using Thin Clients to connect to server.
While in XDMCP connection from thin clients my office application(open office3.1) works very slow. Browsing is fine. Gnome version is 2.0.
can anyone suggest how can i make this work.

thanx

Anonymous's picture

this was very helpful

Re: Linux-Based X Terminals with XDMCP

Anonymous's picture

Instructions works as advertised. Took less than a hour from start to finish. 1/3 of that was downloading, and installing cygwin. I do have many years of Unix/Linux experense. However, this was a very clear path to making X avaible to Windows with very little effort.

GREAT JOB and THANK YOU!!!

Re: Linux-Based X Terminals with XDMCP

Anonymous's picture

First off great article...people that nit-pick should write their own article if they think they can do a better job.

For anyone out there using kdm I noticed that I didn't have to edit the /etc/X11/xdm/* files at all since kdm is what manages the connections the only files need editing are in /etc/kde2/kdm

I setup a debian woody laptop (P-133Mhz, 32MB, 1GB disk) to run KDE off the KDM server (AMD K6-400Mhz, 340MB RAM, 20GB disk) and the performance is excellent on my home network of about 8 machines. I was just about to toss the laptop into the dumpster but thanks to Linux and wonderful folks like the author the laptop will live a little while longer. The monitor resolution of 800x600 and 8bit colors does suck however! :)

Re: Linux-Based X Terminals with XDMCP

Anonymous's picture

Is anyone aware of a project that would allow you to use old windows/citrix terminals with LTSP? For example, this one (http://www.wyse.com/Service/discontd/winterm/wint2000/2315.htm) can be found for $12.00 My church is looking at starting a computer lab for local students, and if I could get these working with LTSP life would be very good.
TIA

Re: Linux-Based X Terminals with XDMCP

Anonymous's picture

Generally, any thin client that can connect to a X-windows server can work .. there are a number out there and I remember reading about the City of Tampa using this concept.

Many require custom kernels but most can be obtained from the manufacturer's web site

I couldn't find any info about the Wyse 2315 having any ability to connect to an X-windows server .. so I think it is not possible with that model (maybe it is possible with other Wyse models)

what about MIT magic cookies?

Anonymous's picture

i've been using this set up for a while, but every so often get the connection refused because of MIT magic cookies. how do we turn them off??!?!?!

Re: what about MIT magic cookies?

Anonymous's picture

"man xauth"

--
Craig Ringer
POST Newspapers

Articles about XDM

wrochal's picture

In case that they have interest in articles on LTSP, it follows link below:

http://www.linuxit.com.br/modules.php?name=Sections&op=viewarticle&artid=421

Citrix Metaframe

Anonymous's picture

I am currently planning moving from a Windows Terminal/Citrix Metaframe setup to Linux running XDMCP. The main drawback is that there seems to be no suitable replacement for Metaframe for Linux. I see Citrix have the Presentation Server for Unix, but it only supports the commercial unixes. Tips on suitable solutions?

Cheers

Re: Citrix Metaframe

Anonymous's picture

>> I am currently planning moving from a Windows Terminal/Citrix Metaframe setup to Linux running XDMCP. The main drawback is that there seems to be no suitable replacement for Metaframe for Linux. I see Citrix have the Presentation Server for Unix, but it only supports the commercial unixes. Tips on suitable solutions?

I experimented for some time with X, LTSP, VNC and IIRC, XDMCP, too. My testing environment was a Fast Ethernet LAN (100 Mbps full-duplex). The greatest problem I saw was latency. Ordinary X protocol connections were quite good, except for massive data transfers which occur, e.g., when continuously scrolling a browser window. Compressing protocols (like VNC or XDMCP) helped then but did introduce undesirable additional latency for simple operations, like pressing Page Down, for instance. VNC (in fact, TightVNC) was specially tricky to setup.

Things would be totally different had I needed to use a dial-up link.

At the end of my tests, I found NX, a protocol for highly efficient data compression, itself a kind of XDMCP (AFAIK). There is a free version on SourceForge, but browse at www.nomachine.org where a commercial version is available (along with free trial downloads).

Though this is claimed to be as efficient as Citrix' ICA (or even more), I didn't have the time to test it (in fact, I had trouble in finding a library upon which the free trial version depended).

This would be my best bet as an alternative solution; have in mind, though, that the bigest problem is server memory consumption, around 50 megabytes per connected user!

Re: Citrix Metaframe

Anonymous's picture

I've been using XDMCP for quite a few years, although I have looked at Citrix it just seems too much for our small shop. What does the Metaframe PS do exactly? SF.net does have a few non-active projects, however I don't think there is an opensource alternative...

Re: Citrix Metaframe

Anonymous's picture

Unless I'm confusing terminology, Metaframe PS is just what is commonly called Metraframe, which is similar to VNC in concept. That is, a "virtual desktop" can be kept running on a server and be displayed on a user terminal.

But while VNC is somewhat clunky, and practically unusable in Windows due to processor overhead, Citrix' Metaframe integrates well with the underlying Windows OS and gives a very light and smooth (but costly) experience.

Re: Linux-Based X Terminals with XDMCP

Anonymous's picture

From the article: Want to get some use out of your early 90s vintage PC, the one barely powerful enough to run Windows 3.1? . . . .

For Mac, consider installing XDarwin . . . .

From the XDarwin site: XDarwin is an implementation of the window server for version 11 of the X window system on the Darwin operating system, underlying Mac OS X.

Maybe the author should tell us exactly which early 90's vintage PC's he's managed to install OS X to? This sort of oversight really detracts from an otherwise valuable article like this. The author is either severely exaggerating certain capabilities, or has simply not done his homework. The bottom line is as follows: this solution is not going to work for any of the legacy Macs he seems to want to include among target hardware for XDMCP. By giving the impression that it will, the article risks alienating people from Linux by leading them into a project doomed to failure. This does not help the OSS movement, damages the reputation of Linux and could waste alot of someone's valuable time. A call for a greater sense of responsibility in writing articles about Linux and its capabilities. More realism, less starry-eyed idealism. Otherwise - for legacy x86 owners - a helpful article and good collection of links. Thanks. But please be more careful in the future.

Re: Linux-Based X Terminals with XDMCP

Anonymous's picture

Your flame is entirely unfounded. Let's review the objectionable line from the article:

"Want to get some use out of your early 90s vintage PC, the one barely powerful enough to run Windows 3.1?"

I don't see how you can interpret this to mean a vintage Mac. No Mac ever ran Windows 3.1. Perhaps you simply need to pay closer attention to details. The article is very well written.

Both the XDarwin and Cygwin suggestions seem to be intended as answers to the question

"Want to introduce Linux to a group of Windows or Mac users with the least amount of resistance?"

I do, however, agree with the general philosophy of the flame. It simply doesn't apply to this article. Please be more careful in the future.

Re: Linux-Based X Terminals with XDMCP

Anonymous's picture

Sorry, but I stand by my criticism. This author needs to clearly distinguish between the modern Macs that can run XDarwin and the legacy/budget network talk the article starts off with. Not having done that, he presents a confusing picture that could easily give the false impression this project is suitable for legacy Macs. That impression is going to lead someone wanting to put into practice the otherwise helpful tips in this article down a dead end, waste alot of that person's time, and risk giving Linux a bad name. The solution to this sort of oversight? Like I said, less starry-eyed idealism about Linux and its capabilities, more realism about what it really can do and which hardware it really is suitable for. If it won't run on legacy Macs in an article that starts off talking about the virtues of XDMCP on legacy systems, that point needs to be made crystal clear up front. Not doing so will not help - but could rather hurt - the Linux cause. Case rested.

Re: Linux-Based X Terminals with XDMCP

Anonymous's picture

Actually, the author's unstated advice is that all you need to participate in this remote-execution XWindow-terminal metaphor is an X11 CLIENT. He did a poor job of stressing that point, alas.

Many exist for Mac OS, Windows, etc. For the Macintosh, eXodus and others will work just fine.

You do NOT need to be running a UNIX to run X11 clients. In fact, I used to do remote X sessions from my 8500/120 running OS 8.6 to both Linux 2.2 (years ago) *and* MachTenX running locally on my 8500.

Cheers,
Lord Apollyon

Nope, what you want on your

Anonymous's picture

Nope, what you want on your desktop machine is a X11 _SERVER_, not a client. A X11 client is an application, like "xterm", "xemacs", "gnome-panel", and so on. (After all, it is the application that connects to a display server, not the other way around).

To make the confusion complete:
- You need a X11 SERVER on your application client machine (the one you are directly interacting with)
- You will be running X11 CLIENTS (xterm, etc) from your application server machine.

-tor

Re: Linux-Based X Terminals with XDMCP

Anonymous's picture

In response to the complaint: "Actually, the author's unstated advice is that all you need to participate in this remote-execution XWindow-terminal metaphor is an X11 CLIENT. He did a poor job of stressing that point, alas."

Again, I think there has simply been a misunderstanding on the part of the reader. An X11 "client" is actually called an X server even if it is running on an isolated un-networked computer. I'm not sure how much clearer one can be than this snippet from the article:

"This means the X terminal must have some operating system with a configured X server installed. In case of Linux, Windows or Macintosh, an implementation of XFree86 is available free of charge."

You provide good advice on the availability of other X servers for Macs, though. Thanks.

Re: Linux-Based X Terminals with XDMCP

Anonymous's picture

Whats the difference between this and the Linux Terminal Server project?

Also, on a switched network with a modern dual Opteron server, how many clients could you support and what would the main bottleneck be?

Re: Linux-Based X Terminals with XDMCP

Anonymous's picture

The LTS project uses this procedure to establish an X session. However, it goes beyond, providing remote boot capabilities, so you don't need to install the operating system at each station. With one configuration, using dhcp or bootp on the server, all you need is to attach the "thin" station on the network and the machine will be booted and the X login prompt will appear to you.

Sorry for my english!

osvaldomarques@brfree.com.br

White Paper
Linux Management with Red Hat Satellite: Measuring Business Impact and ROI

Linux has become a key foundation for supporting today's rapidly growing IT environments. Linux is being used to deploy business applications and databases, trading on its reputation as a low-cost operating environment. For many IT organizations, Linux is a mainstay for deploying Web servers and has evolved from handling basic file, print, and utility workloads to running mission-critical applications and databases, physically, virtually, and in the cloud. As Linux grows in importance in terms of value to the business, managing Linux environments to high standards of service quality — availability, security, and performance — becomes an essential requirement for business success.

Learn More

Sponsored by Red Hat

White Paper
Private PaaS for the Agile Enterprise

If you already use virtualized infrastructure, you are well on your way to leveraging the power of the cloud. Virtualization offers the promise of limitless resources, but how do you manage that scalability when your DevOps team doesn’t scale? In today’s hypercompetitive markets, fast results can make a difference between leading the pack vs. obsolescence. Organizations need more benefits from cloud computing than just raw resources. They need agility, flexibility, convenience, ROI, and control.

Stackato private Platform-as-a-Service technology from ActiveState extends your private cloud infrastructure by creating a private PaaS to provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your enterprise.

Learn More

Sponsored by ActiveState