一个异构的 Linux/Windows 95 家庭网络

作者 Chirakkal Easwaran

随着多台计算机在许多家庭中变得普遍,将所有机器联网并提供互联网访问变得非常重要。Linux 提供了一个稳定的网络环境,可以使不同的操作系统(UNIX、Windows 和 Macintosh)协同工作,并且非常容易设置和管理。这样的网络方便了文件和打印共享以及集中备份。我将描述我的家庭网络配置(见图 1),这是一个 Linux 和 Windows 系统的混合。

A Heterogeneous Linux/Windows 95 Home Network

图 1. 网络配置

我将假设您具备 Linux 安装和管理的基本知识,并且您的 Linux 机器上已设置 PPP。我将详细解释如何将名为 “ancho” 的 Windows 95 机器与名为 “serrano” 的 Linux 服务器联网。向网络添加其他机器本质上是重复此过程。我还将简要讨论设置 Linux 客户端和 NFS。

Linux 机器 serrano 是 Windows 95 和 Linux 客户端的文件和打印服务器,并通过 PPP 拨号连接连接到外部世界。它也充当防火墙;所有其他机器都可以通过它访问外部世界。serrano 上的 CD-ROM 驱动器也可供网络上的其他机器使用。

硬件

我的硬件包括配备 32MB RAM 的 486 DX2/66 机器,以及一台 Pentium 100 笔记本电脑,该笔记本电脑在网络内外均可使用。我使用 NE2000 网卡(Realtek PnP,约 15 美元)和同轴 10Base-2 电缆。如果您有 PCI 板卡(我当然希望您有),设置会更容易,但网络细节仍然适用。

Linux 内核探测 NE2000 卡的地址 0x300,因此卡上的跳线设置为 Linux 机器上的此 I/O 地址。在 Windows 95 机器上,网卡跳线设置为即插即用模式。当您使用同轴电缆连接机器时,请确保在末端使用 50 欧姆终端电阻(Radio Shack 售价约 3 美元)。

软件安装和配置

我从 CD 安装了 Red Hat Linux 5.2。安装所有内容大约需要 500MB 的磁盘空间。我已经使用 Linux 一段时间了,所以这部分很轻松。我能够让 X 正常工作,配置 PPP 并设置打印机。

如果您有一台带有 CD-ROM 驱动器的机器,Windows 95 的安装也应该很容易。我必须从并行端口 CD-ROM 驱动器安装 Windows 95。这很棘手,尝试了好几次。

网络工作的首要目标是在 Linux 机器 serrano 和 Win95 机器 ancho 之间建立通信。

serrano 上的所有网络配置都可以从 Red Hat 控制面板(网络配置器)完成。阅读 Net-3.HOWTO 以获取有关 Linux 网络的更多信息。基本上,您需要将 IP 为 192.168.1.1(或类似的)的 eth0 接口附加到它。要手动执行此操作,请以 root 用户身份执行以下命令

/sbin/ifconfig eth0 192.168.1.1 netmask\
255.255.255.0 up

选择的 IP 地址对应于 C 类地址。通常,这些地址用于内联网。我必须显式地输入路由

route add -net 192.168.1.0 eth0
此路由命令表示所有发往 192.168.1.0 网络的包都应发送到 eth0 接口。此行附加到 /etc/rc.local 文件,以便在启动时设置路由。

在 serrano 上,以类似于此方式设置主机表 /etc/hosts

192.168.1.1     serrano    loghost
192.168.1.3     jalapeno   #Linux machine
192.168.1.100   piquin     #Linux/Windows
192.168.1.2     ancho      #Windows machine
127.0.0.1       localhost

要确认 eth0 接口正在工作,请键入 /sbin/ifconfig eth0。此命令的输出将类似于列表 1。如果您然后键入 more /proc/net/dev,则输出将类似于列表 2。如果 PPP 启动,您将看到 ppp0 接口的附加行。这应该可以处理 serrano。

列表 1

列表 2

现在我们继续进行 ancho(Windows 95 机器)的网络配置。您应该已安装 Windows 95,检测到网卡并安装了驱动程序。在安装网卡时,系统会要求您输入机器名称和工作组名称。将机器名称设为 “ANCHO”,工作组设为 “WORKGROUP”,并添加一些可选注释,如 “我的 Compaq 486 机器”。

转到控制面板并选择 “网络”。在 “已安装以下网络组件” 下,您应该看到您的网卡(我的显示 “Realtek RTL8019 PnP LAN 适配器或兼容”)。您可能会在同一窗口中看到 NetBEUI、IPX/SPX 和 TCP/IP。如果您没有看到 TCP/IP,请选择 “添加”,然后选择 “协议”,单击 “添加”,选择 “Microsoft”,然后选择 “TCP/IP” 并单击 “确定”。这应该会将 TCP/IP 添加到已安装组件窗口。添加 TCP/IP 后,如果您突出显示它,您将能够选择 “属性”。当您单击 “属性” 时,您将看到一个包含多个选项卡的对话框。选择这些选项卡,并分配以下内容

IP Address

  IP Address: 192.168.1.2
  Subnet Mask: 255.255.255.0
Gateway (
  192.168.1.1
DNS Configuration
  Enable DNS
  Host name: ancho
  DNS Server search order: 192.168.1.1
WINS Configuration
  Leave it Disabled.

您可以禁用 DNS,也可以添加 ISP 的 DNS 服务器 IP 地址。这里重要的项目是您的网关和 IP 地址。指定这些并单击 “确定” 后,机器将重新启动。

重新启动后,打开 DOS 窗口并键入 ping 192.168.1.1。稍等片刻后,您应该会收到类似 “Reply from 192.168.1.1: bytes=32 time=4ms TTL=64” 的响应,重复四次。如果失败,则您的网络设置不成功。

现在转到 serrano 并键入 ping -c2 ancho。如果它可以找到 ancho,您应该会收到这两条消息

64 bytes from 192.168.1.3: icmp_seq=0 ttl=32 time=3.9 ms
64 bytes from 192.168.1.3: icmp_seq=1 ttl=32 time=2.3 ms

ping 的 -c2 参数发送两个数据包。如果没有它,ping 将必须使用 CTRL-C 终止。

如果这有效,恭喜您——Linux 机器和 Windows 95 机器可以相互找到。

Samba 设置

要在 Linux 和 Windows 95 机器之间启用文件和打印共享,您需要 Samba 套件,该套件作为 Red Hat 安装的一部分安装。

我想使用 serrano 作为文件服务器,以便我可以将所有 Windows 95 软件安装在 serrano 上。在我在 serrano 上的主目录中,我创建了一个名为 samba 的目录,该目录将用于安装我所有的 Windows 95 软件。我将使此目录 (/home/easwaran/samba) 从 ancho 可见,作为其 D: 驱动器。此外,我有一台 DeskJet 540 打印机,连接到 serrano,我想用它从 ancho 打印。我还想从 ancho 访问 serrano 上的 CD-ROM 驱动器。我在 serrano 上的 CD-ROM 挂载点是 /mnt/cdrom,我希望 ancho 将其视为 E: 驱动器。

Samba 通过文件 /etc/smb.conf 进行配置。阅读 Samba 文档,网址为 http://www.samba.org/ 以获取更多详细信息。我的 smb.conf 文件显示在列表 3 中。Samba 提供了许多其他选项:原始的 /etc/smb.conf 文件有很多很好的示例。另请查看 Samba 文档 (/usr/doc/HOWTO/SMB-HOWTO 或 http://www.samba.org/)。

列表 3

从 Linux 机器挂载目录

使用 smb.conf 文件,我已使我的 serrano 主目录 (/home/easwaran) 和 serrano 上的 /tmp 目录对 Windows 95 机器可见。方括号中的名称 [easdir] 和 [cdrom] 是 /home/easwaran/samba 和 /mnt/cdrom 将可供 ancho 使用并在 “网络邻居” 下看到的名称。

log file = /var/log/samba-log.%m

smb.conf 文件开头的行指示 Samba 登录到 /var/log/samba-log.serrano。如果出现问题,这将非常有用。

修改 /etc/smb.conf 后,停止并重新启动 Samba

/etc/rc.d/init.d/smb stop
/etc/rc.d/init.d/smb start

在以下说明中,我假设您的 Windows 95 登录密码与您 serrano 的登录密码相同。如果它们不相同,当您尝试从 serrano 在 ancho 上挂载目录时,您将收到密码提示。我将密码设置为相同以避免麻烦,但在其他情况下这可能不是一个好主意。

此时,如果您单击 Windows 95 机器 ancho 上的 “网络邻居”,您应该会看到 serrano 列出。双击 serrano,您应该会看到目录 cdrom、easdir、tmp、easwaran、lp 以及您可能已共享的其他目录。打开 DOS 窗口并键入

net use d: \\serrano\easdir

然后您应该会看到 “命令已成功完成”,这意味着 /home/easwaran/samba 在 ancho 上作为您的 D: 驱动器可供您使用。您可以在此目录中安装软件并执行任何您想要的操作。

该命令

net use e: \\serrano\cdrom

将在 serrano 上的 CD-ROM 挂载为 ancho 上的 E: 驱动器。确保您的 CD 已挂载在 serrano 上作为 /mnt/cdrom——您可能需要手动执行此操作。当我安装 Red Hat 5.0 时,最初只有 root 用户具有 CD-ROM 驱动器的挂载权限,因此必须更改这一点。

要使这些驱动器在每次启动 Windows 95 机器时自动挂载,您可以将 net use 命令放在您的启动文件夹中。为此,请在 “启动” 下查找 Windows 95 帮助。或者,您可以打开 “网络邻居”,选择机器和目录,然后单击鼠标右键。这将为您提供 “映射网络驱动器” 的选项。在这里,您可以指定要挂载该目录的驱动器号,以及是否要在登录时映射此驱动器。

打印机设置

从 Red Hat 控制面板在 Linux 机器上正确安装打印机很容易。我们需要将此打印机设置为 ancho 的默认打印机。转到 ancho 的控制面板,单击 “打印机”,然后单击 “添加打印机”。选择 “远程打印机,浏览”。此时,您应该会看到您在 serrano 上的打印机列为 lp。选择它,单击 “确定” 并按照说明进行操作。您将必须加载打印机的驱动程序。(检查 Windows 95 CD 或打印机制造商的磁盘,或在 Web 上找到它。)打印测试页,并将此设置为您的默认打印机。

共享 Windows 95 目录

下一个任务是使 ancho 上的 C: 驱动器对 serrano 和网络上的其他机器可见。单击控制面板中的 “网络”,并确保您已安装 “Microsoft 网络客户端”(如果未安装,请安装它)。在 “文件和打印共享” 下,单击 “我想允许其他人访问我的文件” 和 “确定”。这可能会从 Windows 95 CD 安装更多文件。如果您现在转到 “我的电脑”,单击 “C:”,然后下拉 “属性”,您应该会在菜单中看到 “共享”;单击它。然后单击 “共享为”,并指定共享名称 “C-Ancho”,访问类型:完全。输入访问密码;我使用与我的 Windows 登录密码相同的密码。单击 “确定”。现在您 ancho 上的 C: 驱动器在网络上以名称 C-Ancho 提供给任何机器。“我的电脑” 下 C: 驱动器的图标将有一个蓝色的手握住驱动器。

有一个类似 FTP 的接口,允许您从 ancho 在 serrano 上挂载 C: 驱动器。如果您在 serrano 上键入 smbclient -L ancho,您应该会得到 ancho 上共享资源的列表,类似于列表 4 中所示的列表。

列表 4

如果您在 serrano 上键入 smbclient \\ancho\C-ANCHO,系统将提示您输入密码(您为 ancho 提供用于共享其 C: 驱动器的密码),您将获得 smb> 提示符。如果您键入 ls,您将看到 ancho 的 C: 驱动器上的文件和目录。阅读 /usr/doc/HOWTO 中的 SMB-HOWTO 文档以获取更多信息。

IP 伪装安装——访问外部世界

我在学校有一个 PPP 帐户,每次我通过 ppp0 设备连接时,该帐户都会分配一个 IP 地址,而 ppp0 设备是我的默认网关。

要使防火墙后面的机器能够与外部世界通信,您可以安装 IP 伪装。这需要内核中内置对防火墙的支持。有关如何使用 IP 防火墙支持重新编译内核的详细说明,请参见 IP 伪装 HOWTO (www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html),可在 LDP(Linux 文档项目)站点上找到。Red Hat 5.0 内核已编译了此支持。您需要在防火墙机器 serrano 上启用 IP 转发。在 Red Hat 上,这可以通过在 /etc/sysconfig/network 文件中设置 FORWARD_IPV4=yes 并重新启动网络服务来完成。然后执行

ipfwadm -F -p deny
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0

以 root 用户身份,或将这些命令放在您的 /etc/rc.d/rc.local 文件中以自动执行。有关命令的解释,请阅读 IP-Masquerade-HOWTO。

您可以使用 ipfwadm 命令来选择性地授予网络上的机器访问外部世界的权限。完成此操作后,您可以在 Windows 95 机器上打开 DOS 窗口并 ping 互联网上的机器。如果这有效,您可以从网络上的任何机器访问互联网上的任何机器。对于外部机器,所有 TCP/IP 数据包都将显示来自您的防火墙机器。

配置 Linux 客户端

Linux 客户端 (piquin, 192.168.1.100) 应设置为以服务器 192.168.1.1 作为其默认网关。这可以通过 route 命令完成

route add -net default gw 192.168.1.1

两台 Linux 机器之间的文件共享可以通过 NFS 轻松完成。NFS 守护程序 nfsd 通常在启动时启动。我们希望使 serrano 上的目录通过 NFS 可供其他 Linux 客户端使用。为此,请在 /etc/exports 文件中指定要导出的目录。我在 serrano 上有以下 /etc/exports 文件

/home           jalapeno(rw) piquin(rw)
/home/easwaran  jalapeno(rw) piquin(rw)
/mnt/cdrom      jalapeno(rw) piquin(rw)
这允许将 /home、/home/easwaran 和 /mnt/cdrom 导出到 jalapeno 和 piquin,具有读写权限。修改此文件后重新启动机器,或使用以下两个命令
kill -HUP rpc.nfsd
kill -HUP rpc.mounted
在 Linux 客户端 piquin 上,需要编辑 /etc/fstab 文件以启用远程目录的挂载。在 piquin 上,/etc/fstab 文件具有此条目
serrano:/home/easwaran /home/easwaran/serrano\
nfs defaults,rw,user,noauto 1 1
此命令允许任何用户将 piquin 上来自 serrano 的 /home/easwaran 挂载为目录 /home/easwaran/serrano。如果使用 auto 而不是 noauto,则此远程目录将在启动时自动挂载。要手动挂载此 NFS 目录,请键入 mount /home/easwaran/serrano。在这种情况下,由于目录挂载点是 easwaran 的主目录,因此 easwaran 可以使用挂载的目录,任何有权访问 easwaran 子目录 serrano 的人也可以使用。easwaran 对 /home/easwaran/serrano 具有读写权限。
Linux 远程打印

要使客户端 Linux 机器 piquin 能够在 serrano 上打印,我们需要配置 lp 打印守护程序 lpd。有关 lp 的其他文档和替代方案,请参见 Printing-HOWTO (/usr/doc/HOWTO/Printing-HOWTO.gz 或访问 LDP)。在 serrano 上,创建一个 /etc/hosts.lpd 文件,列出允许在其上打印的机器。我将 piquin 添加到此文件中。

使用 lpd 进行打印通过 /etc/printcap 文件控制。在 serrano 上,该文件如下所示

# /etc/printcap file
lp|dj:\
        :sd=/var/spool/lpd/lp:\
        :mx#0:\
        :sh:\
        :lp=/dev/lp1:\
        :if=/var/spool/lpd/lp/filter:

lpdj 是打印机的名称;sd 是假脱机目录;mx 行表示打印的文件没有最大大小限制;sh 抑制标头;lp 是实际的行式打印机设备;if 是一个神奇的过滤器 shell 脚本,用于处理打印文本文件时的阶梯效应以及文件需要的其他特殊处理。在 Red Hat Linux 上,控制面板有一个打印配置工具,可以轻松配置打印机。

在 piquin 上,/etc/printcap 文件应如下所示

lp|dj:\
      :sd=/var/spool/lpd/dj:\
      :rm=serrano:\
      :rp=lp:\
      :lp=/dev/null:\
      :sh:

rm 定义远程机器;rp 定义远程打印机的名称;sd 是本地假脱机目录。确保假脱机目录存在。更改 /etc/printcap 文件后,重新启动 lpd 守护程序或重新启动。现在,如果您在 piquin 上打印,它应该会出现在连接到 serrano 的打印机上。

在 Linux 机器上备份 Windows 文件

列表 5

我的 Linux 服务器 serrano 有一个磁带驱动器,所以我将网络上的所有文件备份到磁带。要备份 Windows 95 机器 ancho 上的文件,我首先使用 Samba 和一个 Perl 脚本,我在其中指定一个名为 MANIFEST-SMB 的文件,该文件包含 ancho 上要备份的所有目录和文件。然后我使用列表 5 中所示的 Perl 脚本。在该脚本中,****** 是我的 Samba 密码,用于连接到 C-Ancho。清单文件可以包含空行和注释——while 循环中的第一行处理了这一点。它将 MANIFEST-SMB 中指定的 ancho 上的文件备份到我的 Linux 机器的 /tmp 目录中。然后我运行另一个脚本来备份到磁带。

这个网络为我提供了一个稳定高效的家庭工作环境,已超过一年。

电子邮件:easwaran@mcs.newpaltz.edu

Chirakkal Easwaran 博士 (easwaran@mcs.newpaltz.edu) 是纽约州立大学新帕尔茨分校的计算机科学教授。他自 1994 年以来一直从事 Linux 工作。他的研究兴趣在于 TCP/IP 网络和科学计算。他感谢国家科学基金会提供的资助,使新帕尔茨的 Linux 实验室成为可能。

加载 Disqus 评论