Thinking Thin

作者:Lyle Frost

很久以前,曾经有大型机。所有应用程序处理都集中在这个庞然大物上,而桌面设备除了显示其输出之外什么也不做。然后个人电脑出现了,结束了大型机的暴政。个人用户突然被授权安装他们自己的应用程序。软件开发和创新蓬勃发展。个人电脑联网了。因此,大型机被击败了。

但并非所有人都从此过上幸福的生活。维护每台桌面工作站的成本很久以前就超过了购买成本。占主导地位的操作系统就像病毒和间谍软件的培养皿这一事实,使情况恶化到应该被认为是不可容忍的地步。必须面对的是,在大多数情况下,允许用户安装软件是不可取的。唯一明智的管理决策是在用户和管理员之间划清界限。

这在很大程度上可以通过在桌面上使用像 Linux 这样的安全系统来实现。病毒和间谍软件消失了,维护成本可以直线下降。但是,每台桌面上仍然有一个完整的系统必须维护。硬盘驱动器会发生故障。风扇会发生故障。主要的操作系统更新不是自动的。桌面空间被占用。

一种解决方案是向前迈出一步,感觉像是回到了过去。瘦客户端是文本终端的现代等价物。它为桌面提供了一种低调、低维护的设备。应用程序处理被卸载到一个称为终端服务器的集中式系统。Linux 已经成为瘦客户端操作系统的首选,即使终端服务器运行的是 MS Windows。但我们不要半途而废。让我们详细探讨如何部署 Linux 瘦客户端和 Linux 终端服务器。

瘦客户端

是什么使客户端变瘦?最重要的是,瘦客户端具有最少的本地软件,这些软件可以存储在对本地用户只读的闪存模块上。这通常是标准的 CompactFlash 卡或 Disk On Module (DOM),它是带有 IDE 接口的闪存。一小部分闪存被设置为可写,用于保存配置信息,但在正确配置的系统中,用户将无法修改它。一旦配置完成,就用户而言,它几乎就像一台电器。

由于大部分处理由终端服务器执行,因此可以使用速度较慢的 CPU;533MHz 是典型的。这大大降低了冷却要求,这意味着更少或没有风扇。寂静是金。

由于没有内部驱动器或扩展卡,主板组件减少了,从而允许非常小的外形尺寸。小巧的外形尺寸、降低的冷却要求和缺少驱动器意味着非常小的外壳。我通常使用的型号高 9.5 英寸,宽 1.75 英寸,最大功耗为 30W。较小的电源也意味着较小的 UPS。将 700 VA 工作站 UPS 的成本 120 美元,重量 17 磅与 350 VA 瘦客户端 UPS 的成本 40 美元,重量 11 磅进行比较。

Thinking Thin

图 1. Igel 364 LX

Thinking Thin

图 2. Igel 364 LX 内部结构

瘦客户端有两种不同的操作模式:客户端和独立模式。在独立模式下,瘦客户端实际上不是客户端。所有必要的应用程序都加载到闪存中并在本地执行,这可能会通过增加闪存需求来提高购买成本。最常见的应用是 Web 设备。任何像样的瘦客户端都将能够直接启动到 Web 浏览器,甚至阻止用户退出浏览器或修改其配置。

以下是瘦客户端的一个重要注意事项:供应商依赖性。您不能像在工作站上那样简单地下载最新版本的 Firefox 并将其安装在瘦客户端上。制造商必须为您的品牌和型号提供特殊的映像。这是需要改变的事情,但就目前而言,制造商提供的软件是选择瘦客户端的关键因素。如果您想在独立瘦客户端上使用 Firefox,则制造商必须提供它。如果您想让 Flash 和 Java 工作,制造商必须提供插件。也不要期望插件是当前版本。某些插件的大小甚至超过了内存成本的直线下降速度。特别是,Acrobat 和 Java 已经变得非常庞大,以至于使用旧版本比支付运行它们所需的额外闪存和 RAM 更合理。

软件的提供方式取决于制造商。基本上有两种方法。一种是提供单独的模块。这允许您挑选和选择,但在准备客户端时需要更多的工作。另一种方法是制造商提供包含所有所需选项的单片映像。如果制造商在提供自定义映像方面很灵活,这可能是可行的。

当在客户端模式下使用瘦客户端时,应用程序都是终端服务器上的正常安装,终端服务器只是一个高性能服务器,具有足够的马力来完成应用程序处理。

在客户端模式下,瘦客户端具有双重性质。就终端服务器提供的应用程序服务而言,它是客户端,但就为这些应用程序提供对本地硬件的访问而言,它也是服务器。所提供的本地硬件主要是键盘、视频和鼠标 (KVM),但也可能有本地音频、USB 存储设备和打印机。

瘦客户端有 Linux、Windows CE 和 Windows XP Embedded 版本。除非希望在独立模式下使用 Internet Explorer,否则实际上没有任何理由考虑 Linux 以外的任何瘦客户端。即使终端服务器是 MS Windows,在瘦客户端上运行 Linux 这一事实对用户来说也是完全透明的。CE 和 XP 只会增加每个客户端的软件许可成本,而 XP 会使客户端的闪存和 RAM 内存需求翻倍(Linux 的最低闪存和 RAM 为 128MB,而 XP 的闪存和 RAM 为 265)。因此,当今最常用的瘦客户端配置是将 Linux 瘦客户端连接到 MS Windows 终端服务器。

瘦客户端协议

有四种常见的瘦客户端协议

  • 远程桌面协议 (RDP) 是一种专有的 MS 协议,提供单片远程桌面支持。它包括加密和重定向,允许远程应用程序访问大多数本地硬件,包括音频、文件系统和打印机。它目前不允许远程运行单个应用程序(没有桌面),但 RDP 6.0 应该会添加此功能。RDP 客户端可用于 Linux,但没有功能正常的 RDP 服务器,尽管一个名为 xrdp 的新生产品正在开发中。

  • 独立计算架构 (ICA) 是 Citrix 的专有协议。它在很大程度上类似于 RDP,RDP 基于早期版本的 ICA。ICA 包括远程运行单个应用程序的能力,无需整个桌面,但它需要 Citrix Presentation Server,后者可用于 MS Windows 和某些 UNIX 系统。

  • X 显示管理器控制协议 (XDMCP) 是 X Window System (X) 使用的开放标准。它在两个方面与 RDP 和 ICA 显着不同。首先,相同的软件模块(如下所述)用于本地和远程会话。不需要单独的终端服务器软件。其次,它不是单片的。在 UNIX 传统中,它做它所做的事情,并与其他做他们所做的事情的工具一起工作。它不提供压缩或远程应用程序访问 KVM 以外的本地硬件的能力。

  • NX 是构建在 X 之上的开放标准服务器,它简化了瘦客户端网络。它包括对加密(使用 SSH)、访问本地文件系统(使用 Samba)和本地音频(使用 ESD 或 aRts)的内置支持。该服务器还能够转换外国协议,以允许来自 RDP 和其他客户端的连接。NX 是 NoMachine 的产品,该公司开发了一个开源核心,在其上构建了服务器和客户端的专有版本。还有一个完全开源的项目,名为 FreeNX。

应该区分这些协议和远程帧缓冲区协议,如 VNC。VNC 提供对仍然是本地的桌面的远程控制,而瘦客户端协议提供远程桌面。

X 的组成部分

X 如果不是模块化的,那就什么都不是。模块化是一件好事,但对于新用户来说,了解 X 的所有部分如何组合在一起可能会令人望而生畏。以下是主要模块及其交互的摘要,这将使本文的其余部分对于没有以前 X 网络经验的读者来说易于理解。

对物理显示器的所有访问都通过 X 服务器。这对新用户来说是一个困惑的根源,因为显示器在直觉上是客户端的。但是,显示器是它提供访问的服务,因此得名。X 服务器的客户端是使用它来显示其输出的 X 应用程序。我们将在本文后面的关系中看到,X 服务器充当其他服务的客户端。

显示管理器 (DM) 是终端服务器的核心。X 服务器和 DM 具有双重客户端-服务器/服务器-客户端关系。X 服务器可以作为客户端,在 UDP 端口 177 上启动与 DM 的连接。然后,DM 将在 TCP 端口 6000 上作为客户端连接到 X 服务器,以向用户显示图形登录屏幕。客户端可以有多个显示器(窗口或虚拟终端),在这种情况下,第二个显示器将在端口 6001 上,依此类推。此通信的协议是 XDMCP。如果 X 服务器和 DM 在同一系统上,它们将使用 UNIX 套接字进行通信。

X 服务器和 DM 是关于显示器和像素的。两者都没有窗口或小部件的概念。这些由窗口管理器 (WM) 处理。

虽然窗口管理器提供了基本功能以及外观和感觉的主要方面,但这不足以将其视为完全可用的系统。桌面环境 (DE) 使用实用程序(如控制面板和工具栏)以及基本应用程序(如计算器和文本编辑器)完善了用户界面。

通常还会使用一个额外的组件:X 字体服务器。此服务器的名称为 xfs。相对于 xfs,X 服务器是连接到 TCP 端口 7100 上的 xfs 服务器的客户端。X 服务器也可以配置为从文件系统文件夹检索字体。

在部署瘦客户端和终端服务器时要做的主要决定是 DM 和 DE。X 服务器内置于瘦客户端中,DE 将具有默认的 WM,通常没有理由更改它。当今使用的主要 DE 有两个:GNOME (GNU Network Object Model Environment) 和 KDE (K Desktop Environment)。两者都具有广泛的功能,并且在市场份额上大致相等。GNOME 用 C 编写,并使用 GTK+ 库。KDE 用 C++ 编写,并使用 Qt 库。GNOME 和 KDE 都有自己的 WM,分别名为 Metacity 和 KWin。它们每个还提供自己的 DM,GDM 和 KDM,其中一个通常用于代替 X 提供的标准 XDM。

终端服务器配置

首先安装您选择的发行版。下面给出的特定文件位置适用于 Fedora 5。大多数发行版默认只安装一个 DE,因此请确保在安装过程中选择所需的 DE。虽然包括 Fedora 在内的许多发行版都提供了 GNOME 或 KDE 的选择,但有些发行版选择仅提供一个 DE。

GNOME 和 KDE 可以很好地共存。其中一个设置为系统默认值,但 GDM 和 KDM 都允许您在每次登录时动态选择 GNOME 或 KDE 桌面。另一方面,系统默认 DM 是唯一将使用的 DM。

要选择系统默认 DE 和 DM,请编辑 /etc/sysconfig/desktop。它应该只有两行

   DESKTOP="DE"
   DISPLAYMANAGER="DM"

DE 是 GNOME 或 KDE,DM 是 XDM、GNOME 或 KDE。

如果系统没有自动启动到图形登录,请在 /etc/inittab 中将默认运行级别 (initdefault) 更改为 5。

要使用字体服务器,请运行ntsysv并选择 xfs 在启动时运行。此外,通过编辑 /etc/X11/fs/config 配置 xfs 并删除行no-listen = tcp以允许外部连接到 xfs。

KDM 使用文件 /etc/kde/kdm/kdmrc 进行配置,该文件采用 INI 格式。要允许远程连接,请设置Enable=true在 Xdmcp 部分中。您可能还需要自定义 X-*-Greeter 部分,该部分控制登录屏幕的外观。请注意,如果 UseTheme 参数为 true,则此部分中的许多其他参数将被覆盖。KDM 也可以使用 KDE 控制面板进行配置,但它会丢失 kdmrc 中的所有注释。我更喜欢直接编辑 kdmrc。

GDM 也有一个 INI 格式配置文件 (/etc/gdm/custom.conf)。只需设置Enable=true在 xdmcp 部分中。GDM 配置文件没有大量注释,因此 GUI 配置工具 gdmsetup 可能是更好的选择。运行gdmsetup在终端服务器本地。在“远程”选项卡上,将“样式”更改为“纯色”、“带人脸浏览器的纯色”或“与本地相同”。如果疑问,请选择“纯色”。

对于任何 DM,访问都由文件 /etc/X11/xdm/Xaccess 控制。只需添加每个允许主机的 IP 地址或 DNS 名称。单独一行上的 * 将允许来自任何主机的连接。

这是允许瘦客户端登录到终端服务器上的桌面所需的一切,但稍后还需要更多服务器配置才能访问 KVM 以外的本地瘦客户端硬件。

使用 X 连接

瘦客户端不是访问 XDMCP 服务器的唯一方法。客户端软件也可以从工作站运行。您可以访问桌面或直接运行应用程序。

如果 X 当前未运行,则以下命令提供登录到终端服务器主机上的远程桌面

   X -query host

如果 X 已经在运行,则相同的命令也适用,本地桌面和远程桌面位于单独的虚拟终端 (VT) 上。要在窗口中打开远程桌面,请使用

   Xnest -query host

如果其中任何一个给出错误“服务器已激活以显示 0”,请通过添加 :1 作为第一个选项来选择不同的显示编号。

要在没有桌面的情况下远程运行 X 应用程序,请使用

   ssh -X -l username host

登录,然后从命令行运行应用程序。ssh 选项 -C 将为慢速连接添加压缩。

如果您的工作站安装了 tsclient,则它为 Xnest 以及其他协议的客户端软件提供 GUI 前端。

通过安装 Cygwin,可以将上述大多数功能添加到 MS Windows 工作站。安装 Cygwin 时,将软件包 X11/xorg-x11-xwin 添加到默认安装。此外,如果您想使用 SSH,请添加 Net/openssh。然后,上述命令应在 Cygwin shell 中工作。对于 SSH,运行startx首先,然后运行ssh在它创建的 X 终端窗口中。

瘦客户端到终端服务器

瘦客户端提供 GUI 工具,使基本网络配置类似于任何其他网络设备。除了基本配置之外,这些工具还允许创建会话。会话定义要访问的服务器和要使用的协议。XDMCP 可以是一个会话,但由于瘦客户端本身运行 X,因此连接到 XDMCP 服务器可能是一个基本的显示配置设置。具体如何完成取决于制造商。其他协议始终配置为会话。

以下配置详细信息在 Igel 364 LX 上进行了测试。它们应该足够通用,可以与任何具有 ESD 和 NFS 服务器功能的瘦客户端一起使用,但这些不是应该假设的功能。

本地音频

许多瘦客户端完全不支持来自 Linux 终端服务器的本地音频。支持本地音频的瘦客户端通常只有 ESD。这需要将应用程序配置为使用 ESD(大多数应用程序都有此选项,但并非全部)。以下内容也必须添加到瘦客户端用户的 .bash_profile 中,以标识瘦客户端 ESD 服务器的 IP:端口

   export ESPEAKER=${DISPLAY%%:*}:16001
访问本地存储

由于瘦客户端没有内置驱动器,因此唯一值得关注的本地存储是 USB 连接的存储。我们希望可以从桌面图标访问本地插入的设备。但是,由于桌面在终端服务器上运行,我们需要使终端服务器看到这些本地文件。

这需要一个具有本地 NFS 服务器的瘦客户端,该服务器配置为自动检测和共享 USB 设备。在终端服务器上,我们配置 autofs 守护程序以自动检测这些远程挂载的设备并在本地挂载它们。在终端服务器上创建一个目录 /etc/auto。对于每个允许访问本地存储的用户,创建一个文件 /etc/auto/username,内容如下

   usb    -rw,soft,intr    192.168.0.64:/autofs/usb0

将 192.168.0.64 替换为瘦客户端的 IP 地址,路径 /autofs/usb0 会因制造商而异。创建一个目录 /home/username/media,然后将以下内容添加到 /etc/auto.master

   /home/username/media    /etc/auto/username    --timeout=15

最后,在 username 的桌面上创建一个指向 /home/username/media/usb 的符号链接。用户现在可以插入 USB 驱动器,单击该符号链接将导致 autofs 将其挂载到终端服务器上。

此方法有效,并且已在实际部署中使用,但它有一个固有的局限性。瘦客户端必须具有静态 IP,并且每个用户都绑定到一个 IP 地址。在用户需要在工作站之间浮动的情况下,这将是不够的。

限制物理登录位置

在许多情况下,实际上需要将用户访问限制在特定位置。这可以使用 PAM 登录访问控制表轻松完成。首先,必须为瘦客户端分配静态 IP 地址。然后,在终端服务器上的 /etc/security/access.conf 中添加以下条目

   -:username:ALL EXCEPT 192.168.0.64

此文件的格式为 permissions:users:origins。因此,上面的示例从除 192.168.0.64 之外的所有地址中删除了用户 username 的 (-) 权限。

除了明显的安全应用之外,这也适用于公共访问瘦客户端。虽然为每个瘦客户端创建一个单独的通用帐户(user1、user2 等)为每个瘦客户端提供了一个单独的主目录,以便用户不会互相干扰,但在给定的工作站上意外使用错误的通用帐户登录很容易。此过程可以防止这种情况发生。

结论

瘦客户端已经成熟,可以广泛使用。它们的好处太引人注目而不能忽视,而且大多数都致力于将 Linux 作为其主要平台。不幸的是,大多数都目光短浅地专注于 MS Windows 终端服务器,而忽略了对服务器端 Linux 的支持。随着它们越来越广泛地部署,Linux 系统成为在桌面上部署开源的障碍的讽刺可能性非常真实。

必须解决的一些具体问题是

  • 瘦客户端过于专有。需要开放工具来构建闪存映像和其他系统管理任务。

  • 通用支持全双工、低延迟音频。

  • 安全、简易和移动地访问本地 USB 存储设备。

  • 支持本地非 PostScript 打印机。

  • 加密和压缩。

解决方案很可能是 NX 或非常相似的东西——一种在保持系统模块化的同时将组件集成到一个有凝聚力的整体中的东西。我还没有见过具有功能齐全的 NX 客户端的瘦客户端。

本文资源: /article/9388

Lyle Frost 是 Citadel Network (www.citadelnetwork.com) 的顾问,Citadel Network 是一家位于印第安纳州的 IT 管理公司。

加载 Disqus 评论