现在,依靠互联网大家便可以自由自在地在家中工作了。但是,这在Linux下将如何实现呢?假如想在家中使用“dialup PPP”连接,或者采用租用的虚拟私有网络(VPN)使用个人电脑或服务器时,该如何做呢?
在Linux的操作系统上,利用现有SCO的Tarantella和GraphOn的Bridges,可以运行X-Window和微软视窗远程的应用,并且显示在网页浏览器上。然而,这些专门的应用服务器安装可以说是耗时、昂贵的。当然,也可以使用XFree86来远程运行X-Window应用。但X协议需要有适当数量的网络带宽,假使想要从Linux系统控制一个Windows视窗操作系统的机器或服务器,X则显得不能“胜任”。VNC(Virtual Network Computing)的出现给我们提供了一个新的选择。
何谓VNC软件
VNC就是一个通过软件方式实现ATM网络计算机模式的软件系统。它是由AT&T开发的一套远程控制的软件,在遵循GPL的条款下进行分发,也就是说它是一个开放源代码的软件。当网络中的计算机安装了相应的VNC 软件后,就可以在计算机上随时建立和取消对远端计算机的管理控制,所以给这个软件起名为“虚拟网络计算机”。由于VNC使用的通信协议RFB(Remote Fram Buffers)是一个开放协议,它很快就被很多爱好者移植到各种不同的平台上。现在能够支持的操作系统包括所有Windows 9x/2000/NT/XP、MacOS 8.5以上的版本,以及大多数的Unix系统,其中也包括Linux。所有不同平台版本的VNC,不管是Server还是Client,都支持VNC的通信协议RFB。这样就能够很容易地实现不同平台的相互操作。
VNC是一个开放的源代码,而且属于免费的软件产品,具有在Unix、Linux、微软视窗上传送高效能远程控制台的能力。它在根本上有两个部分:客户端应用(VNC Viewer)和服务器端应用(VNC Server)。此服务器对于Unix、微软Windows视窗及MAC操作系统皆可以使用。可以从一台Linux机器的“VNC Viewer”连接到一台运行VNC服务器的电脑。VNC服务器也提供了Java网页界面,可以用来运行远程应用程序,并且将之输出显示在浏览器上。
软件安装
VNC可以直接由其网站http://www.uk.research. att.com/vnc/download.html进行下载。
目前,Linux的VNC版本为3.3.3,而binary文件名叫做3.3.3rl_x86_linux_2.0.tgz,其中包含了Linux VNC服务器和VNC Viewer两者。除了Linux操作系统版本,还需要下载所有的平台的VNC版本,如微软Windows视窗或其它的Unix版本。
当下载了VNC的Linux版本后,可以解压文件到一个文件夹中,例如/home/vnc,然后复制文件vncserver、 vncpasswd和Xvnc到/usr/bin目录中。假如想要能够通过VNC服务器的整合Java界面远程控制Linux电脑,也得需去建立一个子目录/usr/local/vnc/classes。在建立此子目录之后,复制VNCJava.class文件到此目录中。其操作的命令如下:
#mkdir -p /usr/local/vnc/classes
#cp classes/* /usr/local/vnc/classes
接下来,要确定“perl script”是否已经安装到机器中,并且Perl解释程序是否已定位在/usr/bin/perl/。但如果它没有存在,必须去改变“vncserver script”的第一行,去对应它实际的位置。一旦完成上述操作,就可以在终端视窗中通过“#vncserver”的命令启动来“VNC Server”。
在被提问以及设定一组密码后,会显示一个信息表示服务已经启动。在Linux的操作系统上,VNC服务器(VNC Server)程序实际是使用自己的“X Server”。它并不将显示结果输出在显示器上,而是通过网络显示在“VNC Viewer”程序上。因为“X Server”预设显示为0(你的屏幕),VNC将启动自己的“X Server”在下个有用的端口上(:1)。因为VNC有专用的“X Server”,也有其专门的视窗管理员设定。在VNC的常见问题网页上,包含如何配置远程视窗管理员。在预设中,VNC使用“twm”来作为视窗管理员,它是功能相当小的视窗管理员。预设视窗管理者是储存在一个叫做“xstartup”的文件中。而“xstartup”是在“home”目录中的“.vnc”隐藏目录下,见图1所示。
图1 X Server与Clint间的交互
“twm”也许是最低限度的要求者,但一般不会在远程连接之上运行KDE或GNOME。因为这些桌面环境会消耗相当多的系统资源,因此不太容易在网络上运行。另外,负担较轻的Windows管理员如“fvwm2”可从http://www.fvwm.org网站来下载。为了测试VNC Server是否能正常的运行,可以运行“VNC Viewer xxx.xxx.xxx.xxx:1”。“xxx.xxx.xxx.xxx”是电脑的IP地址或名称。“:1”代表X显示的数目。假如安装Java语言的类别,可以通过Netscape浏览器或微软的IE浏览器连接到“VNC Server”。并键入以下URL: http://xxx.xxx.xxx.xxx:5801,其中xxx.xxx.xxx.xxx是你电脑的IP地址。
服务器端与客户端
1.VNC Server
和所有的Server/Client相同,VNC Server要正常工作,被远程控制机器的操作系统和TCP/IP协议栈必须都能正常工作,具有能访问到的IP地址,并且启动VNC Server后,才能对它进行远程控制。下面我们分别在Windows、Mac OS和Unix平台进行了测试试用。Windows平台下VNC在AT&T剑桥实验室的主页上有完整的安装软件包下载,其中包括了VNC Server/Viewer。和普通的软件一样,执行Setup后,所有必需的文件都会被复制到硬盘,同时也会创建一个程序组。其中有一项“Install VNC Server As Service”能够把VNC Server加入到Windows 9x/NT/2000/XP的系统服务中,可以在登录进入系统之前就启动VNC Server。在控制面板中的服务控制里面启动VNC Server服务,并且设置一个访问密码,Windows的服务器端就准备完毕了。见图2所示。
Unix下的VNC Server不需要对软件进行安装,只需要在VNC的网页下载符合使用的Unix版本和硬件结构的二进制可执行文件包。在本地以Root解开,执行Xvnc这个脚本,就会像Windows版本的VNC Server一样,提示输入访问密码,然后就会进入后台作为一个服务运行。通常还会提问输入X Server的DESKTOP号,在使用客户端访问的时候用到。如果没有合适的系统二进制可执行文件包,还可以下载源代码,根据自己的系统做一些调整,编译好就可以运行了。在Unix下,最常用的GUI结构是基于X-Window协议。见图3所示。
图3 X-Window工作方式
2.VNC Viewer(Client)
所有各种平台上的VNC Viewer都是一个很小的执行文件,通常在100KB~200KB之间,可以把它拷贝到软盘上随身携带。Unix下的VNC Viewer通常会需要X Server的支持,也有在Windows/Phonto等GUI环境下的VNC Viewer,可以根据自己运行环境去选择合适的客户端。
在启动客户端后,只需要输入想远程控制的机器的IP地址,在VNC Viewer连接上远端的机器后,输入访问密码,对方机器的桌面就出现在屏幕上了。如果是Windows/Mac OS的服务器端,看到的就是熟悉的Windows/Mac OS桌面。如果是Unix类的操作系统,就会看到一个X-Window的界面。如果X-Window是XFree86的话,默认的窗口管理器会是TWM,可以像在本地一样对远端的机器操作。VNC Viewer可以同时支持连接管理多个远端主机,这样就可以非常方便地同时控制多台机器。VNC还可以工作在另外一种“被动联结方式”。这是一个非常有用的功能。在需要连接到一台在防火墙后面的机器的时候,可以把VNC Viewer开启,进入Listen模式,让VNC Server按普通模式相反的方向去联结VNC Viewer。这样可以绕过这一障碍,和普通的方式一样非常方便地去控制远端的机器。见图4所示。
图4 VNC Server在Unix下以X Server工作时结构
“VNC Viewer java applet”载入到浏览器中,将会被提示输入当初所设置的密码。假如想要远程控制一台Linux或Windows操作系统的电脑,请牢记这些系统仅只有预设的显示。因此,将会使用port 5800来连接到它们。
当对于不同的平台使用多种“GUI Viewer”时,请牢记在预设值中。Viewer启动使用16位的颜色深度。如果控制系统在局域网上,大概看不见有严重的性能降低。然而在互联网上,过多的色彩的确会造成太重的负担。如果你要连接到互联网上,大约只需要使用8位的色彩即可。例如使用Linux系统的客户端,可以简单地发出以下的命令去连接VNC服务器在8位[256]色彩。
#vncviewer xxx.xxx.xxx.xxx:1 -brg233
-bgr233选项是指告知服务器去发送8位真色彩像素格式。前两位元表示蓝色的成分,下三位元表示绿色,其它的三位元表则表示为红色。
结束语
经过以上介绍,大家已经大致了解VNC的基本状态。在家里使用Linux系统,利用VNC去远程控制服务器或桌面电脑还是比较容易的。甚至还可以利用它,在“Palm Pilot”或“Windows CE”上使用无线Modem连结到VNC服务器上。
但是,它在实际使用中还存在一些问题。如果被控制端操作系统或者网络不能正常工作的话,是无法对其进行控制的。这种情况下还得在机器本地进行管理。在我试用过的众多远端控制软件中,VNC是工作效率最高、占用系统资源最小的,而且是惟一一个能够跨越多种平台的自由软件。它对于经常要跨越多种平台进行管理维护的专业人员来说是个最好的选择。