Re: [SLUG] Linux TS guru's

From: Ian C. Blenke (icblenke@nks.net)
Date: Tue Apr 29 2003 - 18:31:42 EDT


On Tuesday 29 April 2003 05:34, cpace@tampabay.rr.com wrote:
> Actually you gave me one of the better explanations as far as the
> difference between the MS Terminal Server world and the Linux Terminal
> Service/XServer world. This makes it much more clearer to me now and I
> think I might have found a possible solution that would work but I would
> like to know if anyone has tried this in their environment. I found a free
> XServer that is java based called WeirdX
> (http://www.jcraft.com/wiredx/index.html) and am curious as to anyone's
> experiences with this XServer so far? Does it perform well?

I've played with it a bit. It's definitely novel, but it's not what you're
looking for.

> Unfortunately I'm still kinda green on all this stuff although you think I
> would have caught on by now but for some reason it escapes me. Once I
> figure it out for myself I'll be better so for now I'm just reading a lot
> of stuff but any offers of advice are always greatly appreciated.
>
> I also know that I can use VNC but from my understanding you must spawn a
> VNC process and each VNCSession is given a port number. What we are trying
> to do in the lab is to redirect from a website to a full blown session that
> a user gets a desktop and everything. With VNC I would have to first spawn
> the process and then direct the browser to the particular port which I'm
> sure we can do with a script but I was looking for other options.

You can do this dynamically. The easiest way is to add lines to your
/etc/inetd.conf and run "Xvnc -inetd" on each connection attempt.

This is exactly what I do on my desktop UML images.

First, add these lines to your /etc/services file:

        vnc-640x480x8 5950/tcp
        vnc-640x480x16 5951/tcp
        vnc-640x480x32 5952/tcp

        vnc-800x600x8 5960/tcp
        vnc-800x600x16 5961/tcp
        vnc-800x600x32 5962/tcp

        vnc-1024x768x8 5970/tcp
        vnc-1024x768x16 5971/tcp
        vnc-1024x768x32 5972/tcp

I'm definining static ports that dish out client sessions at a given
resolution and bit depth when they connect.

Now we need to add the commands that inetd will spawn for each port. The
references to /usr/bin/Xrealvnc would be replaced by your Xvnc server that
you install (preferrably one with tight encoding - www.tightvnc.org).

The following 9 lines define 3 different resolutions with 3 different bit
depths each. Sorry about the word wrap, but there are a few arguments. Add
these to /etc/inetd.conf

vnc-640x480x8 stream tcp nowait nobody /usr/bin/Xrealvnc Xvnc
-inetd -query localhost -once -geometry 640x480 -depth 8 -dontdisconnect
-nevershared
vnc-640x480x16 stream tcp nowait nobody /usr/bin/Xrealvnc Xvnc
-inetd -query localhost -once -geometry 640x480 -depth 16 -dontdisconnect
-nevershared -pixelformat RGB565
vnc-640x480x32 stream tcp nowait nobody /usr/bin/Xrealvnc Xvnc
-inetd -query localhost -once -geometry 640x480 -depth 32 -dontdisconnect
-nevershared -pixelformat RGB888

vnc-800x600x8 stream tcp nowait nobody /usr/bin/Xrealvnc Xvnc
-inetd -query localhost -once -geometry 800x600 -depth 8 -dontdisconnect
-nevershared
vnc-800x600x16 stream tcp nowait nobody /usr/bin/Xrealvnc Xvnc
-inetd -query localhost -once -geometry 800x600 -depth 16 -dontdisconnect
-nevershared -pixelformat RGB565
vnc-800x600x32 stream tcp nowait nobody /usr/bin/Xrealvnc Xvnc
-inetd -query localhost -once -geometry 800x600 -depth 32 -dontdisconnect
-nevershared -pixelformat RGB888

vnc-1024x768x8 stream tcp nowait nobody /usr/bin/Xrealvnc Xvnc
-inetd -query localhost -once -geometry 1024x768 -depth 8 -dontdisconnect
-nevershared
vnc-1024x768x16 stream tcp nowait nobody /usr/bin/Xrealvnc Xvnc
-inetd -query localhost -once -geometry 1024x768 -depth 16 -dontdisconnect
-nevershared -pixelformat RGB565
vnc-1024x768x32 stream tcp nowait nobody /usr/bin/Xrealvnc Xvnc
-inetd -query localhost -once -geometry 1024x768 -depth 32 -dontdisconnect
-nevershared -pixelformat RGB888

Be sure to get the whitespace correct for your distribution's inetd (ie, use
tabs). For xinetd, you merely make a file in /etc/xinetd.d for each line.

Now kill -HUP your inetd process and it should be listening on those ports. To
connect to them from ANY VNC CLIENT, use:

        your_vnc_server:50 for 640x480 x 256 colors
        your_vnc_server:51 for 640x480 x 16384 colors
        your_vnc_server:52 for 640x480 x 16M colors
        your_vnc_server:60 for 800x600 x 256 colors
        your_vnc_server:61 for 800x600 x 16384 colors
        your_vnc_server:62 for 800x600 x 16M colors
        your_vnc_server:70 for 1024x768 x 256 colors
        your_vnc_server:71 for 1024x768 x 16384 colors
        your_vnc_server:72 for 1024x768 x 16M colors

As long as you are running a Display Manager (xdm, gdm, kdm) that is offering
XDMCP sessions to localhost on your_vnc_server, you will instantaneously get
a login banner from that remote box (no VNC password).

NOTE: I do *NOT* recommend leaving VNC listening servers open to the Internet.
There are buffer overflows all over the place just begging for remote
exploits. Use SSH port forwarding or SSL encrypted sockets with client certs
to protect VNC ports. All VNC traffic is sent over the network in the clear
otherwise. You have been warned.

> Again, I thank you for a great response as well as all those that have
> assisted (one of the reasons I love LUG's :)

Hope this helps. It works well for me.

-- 
- Ian C. Blenke <icblenke@nks.net>

(This message bound by the following: http://www.nks.net/email_disclaimer.html)



This archive was generated by hypermail 2.1.3 : Fri Aug 01 2014 - 18:48:02 EDT