NX 的到来,第 5 部分:使用 NX
这是由 FreeNX 开发团队 成员 Kurt Pfeifle 撰写的关于他参与 NX 技术的七部分系列文章的第五部分。在文章中,他深入浅出地介绍了 NX 和 FreeNX 的内部工作原理,并概述了其未来的发展蓝图。在第 5 部分中,Kurt 解释了您如何通过遵循他的分步说明开始探索 NX 的功能。本系列中 Kurt 描述的大部分内容都可以使用一到两张最新的 Knoppix CD,版本 3.6 或更高版本进行重现和验证。Knoppix 现在已经包含工作正常的 FreeNX 服务器设置和 NoMachine NX 客户端一年多了。
NoMachine NX 客户端许可证声明:“允许免费再分发 NX 客户端软件,包括商业闭源软件包,用于商业和非商业用途……”。这使得 Klaus Knopper 能够将 NoMachine NX 客户端包含在 Knoppix 版本 3.6 及更高版本中,即使它不是自由软件。它也包含在 Kanotix 中。NX 客户端以二进制形式发布,根据类似于我们在大多数 Linux 发行版中找到的 Adobe Acrobat Reader 软件的商业和非商业用途免费许可证发布。基于 KDE 的 NX 客户端 kNX 也可用。kNX 可以工作,并且每天都有很多人使用,但它更像是一个概念验证实现,尽管如此,目前还不建议普遍使用。
Knoppix 还包括 FreeNX,这是一个完全 GPL 许可的 NX 服务器应用程序实现,它基于 NoMachine GPL 许可的 Core NX 库和实用程序。因此,Knoppix 使您能够访问世界上任何免费或商业 NX 服务器,甚至可以从 CD-ROM 运行您自己的 FreeNX 服务器。
在本系列的这一部分,我们已经到了可以进行各种实践练习的阶段。我一直在使用 Klaus Knopper 在 LinuxTag 2005 期间发布的 Knoppix-4.0 DVD 版本。但是,任何其他 CD 或 DVD 版本的 Knoppix torrent 或 Kanotix torrent,自 3.6 版本(2004 年 3 月)以来,都应该以相同或类似的方式工作。根据您是否有一台或两台从 Knoppix 启动的可用机器,您应该能够跟随我们在此处描述的大部分或所有不同活动
使用从 Knoppix 启动的 NoMachine NX 客户端运行到位于意大利罗马的 NoMachine “testdrive” NX 服务器的远程 NX 会话。本文解释了如何做到这一点。
使用从 Knoppix 启动的 FreeNX 服务器运行到同一 Knoppix 实例的本地 NX 会话。这将在下一篇文章第 6 部分中解释。
使用从一台 Knoppix 启动的 NoMachine NX 客户端运行到第二台 Knoppix 的远程 FreeNX 会话。这也在第 6 部分中解释。
为 NX 连接实施一些人为的 TCP/IP “流量整形”,以模拟调制解调器线路上的链路条件,并将 NX 在这种介质上的性能与纯粹的 vanilla X11 性能进行比较;也在第 6 部分中。
请注意,您的性能测量值可能与本文中呈现的值有所偏差。这将取决于您的硬件(主要是 RAM 大小和 CPU 功率)与我的硬件的差异程度。
启动 Knoppix,并确保您已连接到互联网。由于我们的第一个练习是运行到公共 NoMachine testdrive NX 服务器的远程 NX 会话,因此您需要为自己创建一个帐户。打开 Web 浏览器并转到 http://www.nomachine.com/testdrive.php。您需要在那里注册一个临时 testdrive 用户帐户(参见图 1),以便您可以访问意大利的 testdrive 服务器,或者选择访问德国的另一个 testdrive 服务器。
注册不需要您的姓名和电子邮件地址以外的任何信息;参见图 2 和图 3。然后,您需要等待确认电子邮件出现在您的收件箱中(图 4);它应该在几分钟内到达。
使用 NoMachine 提供的远程 testdrive 来形成对 NX 在真实互联网连接环境中的性能的初步有效印象。这是对 NX 或 FreeNX 对于您的远程终端服务器要求的可行性得出初步结论的最快方法。
请注意,testdrive.nomachine.com 上最多允许 30 个并发 NX 用户会话。此外,目前没有针对远程会话到 Windows 终端服务器的公共 testdrive 选项。如果您迫切需要测试,请发送电子邮件给 NoMachine 并请求特殊许可。

图 2. 您的姓名和电子邮件地址是接收 NoMachine NX 服务器七天测试帐户所需的全部信息。
如果您觉得 NX testdrive 服务器足够有趣,那么您可以继续进行自己的测试并设置您自己的 (Free)NX 服务器。一种快速的方法是运行任何最新的 Knoppix Live CD 上提供的 FreeNX 服务器。

图 3. 确认说明向您保证,包含您的测试帐户凭据的电子邮件正在发送到您的邮箱。
请注意,在您稍后将使用的 NX 客户端中,“用户 ID”文本字段标记为“登录名”。

图 4. 实际上,几分钟后,帐户凭据已到达。
邮件详细说明了 NX 服务器名称、要使用的 (SSH) 端口号、您的登录名和密码。图中插入了星号以隐藏真实密码。测试帐户有效期为一周,之后会自动过期。
您无需从 NoMachine 下载并安装最新的 NX 客户端。Knoppix 中包含的版本 1.4.0 现在已经足够好了。我知道更喜欢冒险的读者会很想下载新的 1.5.0 客户端,因为他们知道带有新的 UnionFS 文件系统的 Knoppix 可以轻松安装和运行新的软件包,同时从 CD 运行。如果您知道如何执行此操作,请继续。
我只用了 50 秒就收到了包含我的登录数据的电子邮件。再过 50 秒后,我成功登录到 testdrive 服务器并正在运行 KDE 会话。testdrive.nomachine.com 绝不是一台高度调整的大型机器,准备好被 LinuxJournal.com 报道,尽管如此;它是一台双 2.4GHz Xeon PC,配备 1,024MB RAM。
我在为本文进行测试期间注意到,由于负载过重,testdrive 服务器有点慢:24 个其他 NX 会话正在运行,其中 19 个 KDE 和 5 个 GNOME。该站点的设置并非旨在提供比开箱即用安装的桌面(SuSE 9.1 Professional)更精简或更针对远程访问优化的桌面,也未针对最小化使用的资源进行调整。如果您等待足够长的时间,即使是随机的屏幕保护程序也可能会启动,从而使用一些完全不必要的资源。同样在我的测试期间,一位恶意的 NX testdrive 用户故意试图通过连续打开 300 多个 Bash 会话来使服务器瘫痪,从而给该设备带来了非常高的负载。我的 NX 会话仍然可以工作,尽管有点慢。
要连接到 NoMachine NX 测试服务器,请在 Knoppix 主菜单(KDE 会话)中选择“互联网”-->“Linux 版 NX 客户端”-->“主程序菜单中的 Linux 版 NX 客户端”(参见图 5)。当您第一次启动 NX 客户端时,它以向导模式运行(参见图 6)。

图 6. 客户端在首次启动时以向导模式运行。初始屏幕的唯一选择是单击“下一步”(1) 以继续向导步骤,或单击“取消”(2),这将调出正常的 NX 客户端模式。这也允许您填写所有连接数据。
NX 客户端的任何未来启动都会以正常模式启动它(参见图 10)。如果您希望看到向导,您可以始终通过在命令行中键入以下命令重新运行它/usr/NX/bin/nxclient --wizard.

图 7. NX 连接向导的第二个屏幕
第二个屏幕是 NX 连接向导最重要的屏幕。您可以使用它来
为会话分配一个名称;所有其他会话参数都存储在此名称下,带有 .conf(在 1.4.0 中)或 .nxc(在 1.5.0 中)后缀。如果您连接到不同的 NX 服务器或连接到具有各种设置的同一服务器,这是一个方便的功能。
填写您要连接的 NX 服务器的完全限定主机名或 IP 地址。
使用正确的端口号进行连接。由于 NX 利用目标系统的 SSH 守护程序进行连接,因此这通常是端口 22,但不必如此。SSH 守护程序可以配置为侦听多个端口或更不寻常的端口。如果您计划设置一个“外部”NX 服务器,您需要通过防火墙从内部网络访问该服务器,则端口 443(通常分配给 HTTPS 协议)通常很方便使用,因为大多数防火墙及其管理员已经允许访问该端口。如有疑问,请咨询您的网络管理员。
使用滑块更改 NX 压缩级别,从最高(调制解调器)到完全不压缩(局域网)。即使您使用 DSL 线路,使用调制解调器压缩级别也无害,并且通常是有益的。请注意,LAN 设置根本不使用任何压缩,因此如果会话对您来说执行速度太慢,请务必尝试更改该设置。

图 8. NX 连接向导的第三个屏幕
在向导的第三个屏幕上,您可以选择会话类型。但是,NoMachine NX testdrive 服务器不提供 Windows 或 VNC 连接。对于图 8,编号字段与以下任务对应
此下拉菜单提供 Unix、Windows 和 VNC 连接
此下拉菜单为 Unix 连接提供 KDE、Gnome、CDE 或自定义会话;对于 Windows 或 VNC 连接,它是灰色的并且被禁用。
对于 Unix/自定义或 Windows 和 VNC 连接,启用“设置”按钮。Unix/自定义连接以及 Windows 或 VNC 连接在其他屏幕截图中进行了解释。
此字段确定远程 NX 会话的窗口大小。1.5.0 NX 服务器允许动态更改大小;1.4.0 服务器会话在其整个生命周期内使用相同的固定大小。您可以在各种预定义大小、自定义大小或全屏之间进行选择。全屏特别有趣,因为它创建了一个没有边框的窗口,该窗口覆盖了原始客户端机器屏幕。这样,即使从 Windows NX 客户端运行 Linux KDE 会话,您也可以伪装,而不会有太大的风险让偶尔的观察者发现“假”。如果您选择自定义窗口大小,则可以在 4a 和 4b 中设置宽度和高度。这里没有限制;您甚至可以为您的远程桌面选择纵向类型的窗口。
强烈建议永久启用“所有流量的 SSL 加密”。但是,请注意,正在进行的加密及其所有流量的配套解密会给 CPU、NX 客户端以及 NX 服务器带来更大的负载。如果您在仅限受信任用户的隔离公司网络内部运行 NX 网络,您可能希望为 CPU 较弱的旧客户端硬件禁用它。

图 9. NX 连接向导的最终屏幕
在连接向导的最终屏幕上,您可以使用字段 1 在桌面上创建一个快捷方式,这对于重新运行远程会话非常方便。“高级配置”对话框将在下面的其他屏幕截图中介绍。

图 10. 标准 NX 客户端登录对话框
标准 NX 客户端登录对话框为您提供输入以下内容的空间
您的登录名或用户 ID,如电子邮件发送给您的那样。
您的密码,不以明文显示,而是隐藏在星号后面。
您即将到来的 NX 会话的自创名称。此名称用于将您选择的设置存储在 sessionname.conf 配置文件中。您可以为相同或不同的远程 NX 服务器存储不同设置的变体,并以不同的名称存储,以便以后更容易重复使用。“会话”字段是可编辑的。如果您更改它,NX 会询问您是否要使用更改后的名称创建新配置,或者是否要重命名旧配置。
“配置...”按钮会调出高级配置对话框,这将在下面的其他屏幕截图中讨论。
单击“登录”以启动远程会话。
您可以在启动新 NX 会话之前的任何时间访问“高级配置”对话框,以修改以前使用的设置。会话一旦运行,大多数设置都是固定的。此外,暂停会话并在稍后阶段恢复会话会重用与最初创建会话时相同的设置。但是,从 NX Core 库的 1.5.0 版本开始,可以将会话窗口的大小调整为任意宽度和高度值,或者使用 [Strg]+[Alt]+[f] 键盘快捷键在窗口模式和全屏模式之间切换。
我们现在更仔细地查看“高级配置”对话框的五个选项卡式屏幕,首先从“常规”选项卡开始。
此处解释了“常规”选项卡中的字段
1a、1b:您已经从“连接向导”屏幕截图中熟悉了这些设置。
2:您可以将 NX 密码保存在会话配置文件中。虽然不是以明文形式保存,而是以适度加扰(未加密!)的形式保存,以避免过于容易检索,并且虽然受到您主目录中仅用户访问权限的保护,但您仍然应该意识到密码存储在磁盘上,并且可能被同一系统的其他用户检索。任何可以物理访问您的客户端计算机的人都可以运行到您的远程帐户的 NX 会话,甚至无需检测密码,因此请采取预防措施
3a、3b、3c、4、5a、5b、5c:您应该从“连接向导”屏幕截图和说明中识别出这些设置及其含义。
6a、6b、6c:默认图像编码通常会产生良好的结果,同时仍然节省带宽。它使用 JPEG 级别 6 质量。这样,您可能会在高度压缩的远程会话中看到一些典型的 JPEG 伪影,例如在带有颜色阴影的桌面背景壁纸中。您可以自定义图像编码以使用 PNG 压缩(无损 - 更高质量,但也更多的网络流量)甚至更高的 JPEG 压缩,以获得更好的网络节省,但 JPEG 压缩伪影的可见性更高。
图 12 显示了“高级”选项卡及其字段。
“启用 SSL 加密”对话框。
在运行的 NX 会话期间,NX 在内存中保留图像和其他数据的缓存。此缓存在为远程会话创建出色的 NX 加速方面有很大帮助。会话结束后,缓存将存储在磁盘上。然后,磁盘缓存文件可以在将来重复使用。磁盘缓存涵盖两种情况:同一用户+客户端运行到同一服务器的另一个会话,或者 NX 会话被暂停并在稍后阶段恢复。在此处设置您要为 NX 会话保留的 RAM 量。默认值为 4MB;我主要使用 32MB,因为我不是在内存耗尽的瘦客户端上运行。
此下拉列表设置存储的会话缓存文件的磁盘空间限制。默认值为 16MB;我总是将其增加到 128MB,因为我的硬盘上有足够的可用空间。如果达到限制,则会自动删除最旧的文件和/或缓存条目,以便为当前会话创建新空间。
此按钮删除所有过去的缓存文件。
键盘可以映射到不同的布局,具体取决于您的需求。但是,默认设置是使用 NX 客户端计算机的当前设置。
图 13 描绘了“服务”选项卡及其输入字段。
如果您希望在 NX 客户端系统上与远程 NX 服务器共享本地文件和目录,请启用此复选框。此设置使远程运行的 NX 服务器上的应用程序能够访问这些文件并修改它们,或者将新文档保存到共享目录中。此功能使用 SMB 协议和 smbmount 实用程序来执行其操作。这样,即使使用远程运行的 The GIMP 实例创建图像,您也可以轻松地将图像存储在本地硬盘上。
启用此复选框可通过本地连接的打印机从远程运行的应用程序打印(通过 CUPS)。每个单独的共享 CUPS 打印机都需要单独配置(请参阅下面描述的“添加”和“修改”按钮)。
CUPS 在您的本地环境中使用的端口号。这通常是 631。如有疑问,请咨询您的本地打印机管理员。
单击“添加”以向列表中添加另一个打印机;该列表最初为空。将弹出一个新对话框,允许您从本地运行的 CUPS 守护程序提供的资源列表和要用于远程会话的驱动程序中选择打印机。
突出显示列表中的一个打印机,然后单击“修改”以更改其设置。该列表最初为空,并且“修改”按钮被禁用。将弹出一个新对话框,允许您从本地运行的 CUPS 守护程序提供的资源列表和要从远程会话使用的驱动程序中选择打印机。
如果您想从 NX 可用的打印机列表中删除打印机,请突出显示列表中的一个打印机,然后单击“删除”。这不会从您的本地 CUPS 安装中删除打印机,而只会使其对 NX 不可用。
多媒体支持本质上是将声音事件从您的远程 NX 会话隧道传输到您的本地扬声器。因此,如果您的远程 KDE 配置为发出启动声音赞歌,您将在每个新 NX 会话开始时听到它。
“高级配置”对话框的“环境”选项卡(图 14)包含以下字段
此行提示 NX 客户端框上目录的位置,用户特定的会话文件日志、设置、缓存、图像、流量统计信息等都存储在该目录中。请注意,您通常不需要更改此设置。如果您不想将旧会话文件保留在硬盘上,请启用 1b 中的复选框。请注意,如果您需要访问旧会话文件以进行调试,以防您的 NX 会话出现问题,则应禁用此复选框。
如果您想导航到其他目录以存储 NX 会话文件,请单击此按钮。您通常不需要更改此设置。
此行提示 NX 客户端框上目录的位置,系统范围的 NX 文件(二进制文件、库等)都存储在该目录中。您通常不需要更改此设置。
如果您想导航到其他目录以存储 NX 会话文件,请单击此按钮。您通常不需要更改此设置。
此行写入 NX 客户端框上的完整路径,在该路径中可以找到用于启动 CUPS 守护程序(本地到 NX 客户端框)的可执行文件。
如果您想导航到其他路径以查找本地系统的 cupsd 可执行文件,请单击此按钮。您通常不需要更改此设置。
如果您希望 NX 客户端对话框以不同的字体显示,请单击这些按钮。请注意,在某些旧版本中,“固定”字体设置为无法辨认的小值,并且由于错误而无法永久更改。该错误已在最新版本中修复。
“关于”框向您显示 NX 客户端的版本。如果您报告错误或在 FreeNX 邮件列表或 Freenode 上的 #nx IRC 频道中寻求帮助,这可能很重要。
我希望您现在已成功连接到 NoMachine testdrive 服务器之一。如前所述,testdrive 服务器无法处理大量流量,因此您可能无法在阅读本文后立即尝试您自己的 NX 会话。但是在您访问该站点期间,请尝试一些在您的 Knoppix CD 上包含的旧 FreeNX 版本中不起作用的事情,我们将在接下来的测试中使用该版本
使用组合键 [Ctrl]+[Alt]+[f] 切换全屏和窗口化 NX 会话模式。
使用鼠标拖动窗口边框并将 NX 会话窗口调整为您喜欢的任何大小,甚至是纵向形状。
这些功能首次包含在 1.5.0 版本的 NX Core 库中。它们也适用于旧版本的 NX 客户端,1.4.0-75 和 1.4.0-91,因为它们包含在 Knoppix 中。
您还可以熟悉一些适用于 Knoppix 中包含的 FreeNX 服务器版本的其他快捷方式
单击位于桌面最右上角的 magic pixel 以退出 NX 全屏模式并将窗口最小化到任务栏中托管的按钮。
使用组合键 [Ctrl]+[Alt]+[t] 终止或暂停您的会话。
使用组合键 [Shift]+[Ctrl]+[Alt]+[Esc] 杀死您正在运行的会话。
以下是一些您可能会在未来的 NoMachine NX 客户端安装中发现有用的巧妙技巧。您可以使用以下命令启动 NX 会话管理器/usr/NX/bin/nxclient --admin(图 15)。此实用程序使您可以舒适地启动新会话、断开或杀死正在运行的会话、查看会话日志或删除旧会话文件。可能其中最被低估的功能是它生成关于 NX 协议效率的会话统计信息的能力。压缩比、缓存命中和未命中以及总体摘要的事实和数据只需单击鼠标即可获得。它也是调试会话的绝佳工具。
对于计划使用大量客户端进行大型 NX 安装的站点的管理员来说,最有用的可能是 nopasswd、noexit 和 noconfig 特殊文件。在 /usr/NX/share/ 中创建一个或所有这些空文件,使用 touch 命令,并确保权限设置为只读
touch /usr/NX/share/{noexit,noconfig,nopasswd} chmod 444 /usr/NX/share/{noexit,noconfig,nopasswd}
这些空文件的存在大大锁定了 NX 客户端用户环境。亲自尝试一下:创建文件并观察它们的效果。只需删除文件即可再次删除这些功能。您应该看到以下内容
文件 /usr/NX/share/nopasswd 禁用在 NX 会话文件中保存用户名和密码的功能。当 NX 终端有多个用户并且管理员需要强制在每次会话之前键入 NX 用户凭据时,这非常方便。它确保只有预先建立的用户才能通过 NX 客户端访问 NX 服务器。
文件 /usr/NX/share/noexit 禁用 NX 客户端 GUI 中的所有“关闭”按钮。当用户关闭或丢失正在运行的会话时,一个新的 NX 客户端对话框会自动出现在桌面上,准备好供下一个用户启动新会话或供当前用户重新连接到他丢失的会话。在客户端终端有多个需要快速轻松地访问其会话的用户的情况下,这是受欢迎的。
文件 /usr/NX/share/noconfig 禁用用户配置新会话设置或修改现有会话设置的所有可能性。这允许管理员完全锁定用户可以运行的会话类型。此功能仅在 NX 客户端以 --session 或 --plugin 选项启动时有效。
最后一个提示:访问优秀的 NoMachine 知识库。在那里,您将找到有关 NX 技术及其用法的大量高级信息。FAQ 部分和 收集的文章 可能会为您节省大量时间。另请务必查看 NoMachine 支持 和 资源 网站,而不是仅依赖 Google 搜索结果。我想警告读者:Google 挖掘出许多关于 NX 的过时页面,其中一些页面对 (Free)NX 用户的建议完全错误。
本系列文章的下一期,第 6 部分,将向您展示如何从 Knoppix CD 运行 FreeNX 服务器。此外,它将向您介绍一种简单的方法,使您可以在 Knoppix 回环网络设备上模拟慢速调制解调器链路。它还将教您如何将 NX 会话与 Xnest 会话进行并排比较,以了解 NX 相对于传统 X11 远程处理的一些速度改进。
Kurt Pfeifle 是一名系统专家,并且是德国斯图加特 Danka Deutschland GmbH 咨询和培训网络打印组的技术负责人。Kurt 在全球开源和自由软件社区中以热情的 CUPS 布道者而闻名;他对 CUPS 的兴趣可以追溯到 1999 年 6 月的第一个 beta 版本。他是 KDEPrint 手册的作者,并为 KDEPrint 网站 做出贡献。Kurt 还处理 Linuxprinting.org 的一系列事务,并为 Samba 项目编写了大部分打印文档。