Linux 和 Samba 在联邦实验室的应用
最近,Linux 和 Samba 满足了马里兰州阿德尔菲的陆军研究实验室 (ARL) 的需求。我们的部门对特定类型的激光器进行最先进的研究,并在这些设备的性能测试期间收集大量数据。我们能够通过网络将我们的测试设备连接到 Samba 服务器。这种方法的巧妙之处在于,我们的配置让用户感觉他们是通过该部门的 NT 文件服务器访问数据。我将详细解释设置,但主要技巧是在 NT 机器上创建一个网络快捷方式,指向 Samba 共享,同时使 Linux 机器在网络上不可见。图 1 描绘了网络设置。
我们的部门开发名为 VCSEL(垂直腔面发射激光器)的极小型激光器,它们属于光子学研究的范畴。我们可以轻松地将 60 多个激光器放入一平方毫米内,而包含激光器的整个晶圆的直径可以达到三英寸。因此,我们可以在单个晶圆上拥有数千个设备。图 2 显示了一个典型的 VCSEL 的图片。我们运行以表征每个 VCSEL 性能的主要测试称为 ILV 曲线,分别代表电流、光和电压。基本上,我们观察输入功率产生了多少光。此外,大多数分析软件都在用户的桌面机器上,因此他们需要能够从那里访问原始数据。用户有习惯性。历史上,获取与部门相关的数据意味着访问 NT 服务器。由于用户习惯于从 NT 机器获取数据,我们不想让他们去其他地方。我们试图使一切对用户透明,并让他们感觉好像是从 NT 服务器获取数据。为了迫使用户通过 NT 机器,我们使 Linux 机器对网络不可见。我们依靠 NT 机器的安全机制来验证访问数据的用户身份。

图 2. 典型的 VCSEL:大矩形是测试探针的接触焊盘。实际的激光区域是底部中心的小灰色正方形。
表征 VCSEL 的关键设备有两件。首先是探针台,它基本上就是一个带有微小探针和光度计的显微镜。探针向设备施加功率,我们用光度计测量产生的功率。来自安捷伦的 4155B 参数分析仪是第二件设备。该分析仪被编程为扫描电流水平并测量电压和光。它有两种主要的控制方式:前面板和 GPIB 接口。诚然,GPIB 端口是一种流行的科学接口,它允许我们通过计算机控制测试设置并收集数据来执行更复杂的测试,但我们的控制计算机位于实验室工作台下方约五英尺处,无法移动得更近。这使得在探针就位时难以启动测试。幸运的是,我们的主要测试很容易通过前面板进行编程。我们的测试程序是通过显微镜的目镜定位探针,小心地伸出手,按下参数分析仪上的测试按钮,然后保存数据。图 3 显示了实验室硬件。

图 3. 探针台(底部中心)和 4155B 参数分析仪(左上角的白色盒子)
在获得干净的运行后,我们需要保存数据。4155B 有三种保存数据的方式:GPIB、软盘和 TCP/IP。由于我们没有使用 GPIB 控制分析仪,所以这不是一个选项。软盘支持 3.5 英寸磁盘,但这些磁盘很快就会填满,而且您必须带着它们到处走动。由于我们有多个工作区域,不得不折返回去取回临时放错地方的磁盘的情况并不少见。我们组合在一起的解决方案之所以有效,是因为它支持 TCP/IP。
参数分析仪支持 TCP/IP,特别是 NFS。您甚至可以 ping 分析仪。由于它已在实验室的 DNS 中注册,因此可以通过 IP 地址或名称进行 ping 操作。我们能够用过时或损坏的设备组装一台 Linux 机器。实际上,我们将三台计算机的部件拼凑成一台。政府没有为此花费任何费用,而且它满足了需求。对于安装,我们拥有的最新发行版且 P-133 硬件可以支持的是 Red Hat 6.2,因此我们安装了它,并使用 Bastille 和最新的补丁进行了强化。此外,所有不必要的服务都被关闭,并添加了 SSH。我们仔细划分了硬盘空间,最终获得了约 1.5GB 的数据空间。安装和配置的总时间为三个小时。
同样,参数分析仪使用 NFS 通信,因此下一步是配置它。/etc/exports 文件只需要一行
/home/guest/hptestdata 192.168.10.29(rw)
hptestdata 目录是在 guest 的主目录下创建的,并且重启了 nfsd。这一行只允许一个 IP 地址挂载该目录。在参数分析仪的前面板中输入了适当的信息,并按下了挂载按钮。当然,第一次并没有成功。经过仅仅一分钟的诊断,将分析仪上的 ID 号与 guest 帐户同步解决了问题。配置 NFS 的总时间不到五分钟。
Samba 是一款出色的产品,可以做很多事情。这是一个简单的应用,/etc/smb.conf 如列表 1 所示。
当然,像网络域这样的关键安全信息已在此文件和 /etc/exports 中进行了更改。文件中的关键部分是创建 hptestdata 共享并使其只读。只读部分是为了防止用户意外删除数据。我们会定期清除,但仅在获得所有用户的保证后才进行。Samba 的另一部分是修改启动文件,以便杀死 nmbd。使用我们正在设置的网络配置,我们不希望在网络上看到这台机器。因此,我们不希望 nmbd 提供名称服务。有关要配置的适当文件,请参阅您的发行版文档。对于 Red Hat 6.2,我们修改了 S91smb,并通过在适当的行开头放置 # 注释掉了 nmbd 启动行。为了提醒自己这种网络配置,我还更改了文件中的 echo 行,以说明 smbd 没有启动。通常,脚本会输出 nmbd 正在启动。访问仅限于我们的域,因此可以防止外部访问。配置的总时间是几个小时的调整。
最后的配置步骤是在 NT 机器上。我们还没有在其他地方看到过这个技巧,所以我们认为它非常巧妙。我们为 Linux 机器创建了一个数据共享。这是用户从他们的桌面访问数据的地方。然后,我们使用 UNC(通用命名约定)创建了一个网络快捷方式,并将其放入数据共享中。老实说,为了做到这一点,我们让 Samba 共享在网络上可见了一分钟,并在该目录中创建了一个快捷方式。这样做比费力地更正双反斜杠更容易。当用户访问 NT 服务器时,他或她会看到共享文件夹。双击那里会显示一个目录。双击该目录会将用户带到 Linux 机器,其中包含测试数据,而用户没有意识到这一点。这个技巧是必要的,因为 Windows 无法共享它已挂载的网络驱动器。我最初的计划是让 NT 机器将 Samba 共享映射到驱动器,然后再共享该驱动器。配置的总时间为五分钟,在意识到 Windows 无法共享映射的驱动器并且我们采用了这个技巧之后。
Linux 和 Samba 满足了实验室原本无法支持的需求。该方法对用户是透明的,因为他们去同一个中心位置获取数据;它与部门的 NT 服务器一样安全,而且由于我们使用了 100% 废弃的设备,因此实际上是免费构建的。
该方案仍然存在轻微的安全问题。一位精通计算机的用户可以查看网络快捷方式的属性,然后使用它直接创建指向 Samba 服务器的快捷方式,从而绕过 NT 安全机制。另一种选择是使用 Linux 机器和 smbmount 从 NT 服务器挂载共享,并使用 NFS 将其导出到测试设备。我们能够将 NT 共享挂载到 Linux 机器上,使用 NFS 导出它,然后在 4155B 上挂载它。仍然存在的问题是写入该共享,即使使用 smbmount 的选项也是如此。希望在不久的将来,我们将有一些时间再次解决这个问题。

