Linux 以太网连接

作者:Terry Dawson

许多在工作场所或大学的机器上安装 Linux 的人也希望将其机器连接到局域网,以便他们可以利用互联网连接或网络上的其他机器。如果您是这些人之一,并且唯一阻止您的是不知道从哪里开始,我希望本文将证明这样做很容易——只要您做好充分的准备并知道要注意哪些事项。

以下是将您的 Linux 机器连接到网络时需要考虑的几个关键领域:

  • 您要连接的网络类型。

  • 您需要的网络接口卡 (NIC) 类型。

  • 配置内核以支持网络接口卡。

  • 地址 - 主机、网络、广播和路由器。

  • 配置 Linux 以进行网络连接。

  • 路由。

  • 名称和域名服务器。

您要连接的网络类型非常重要,原因有很多。最重要的是网络类型多种多样。目前,Linux 对以太网网络提供了良好的支持,但对其他网络类型(如 ARCNet、令牌环、FDDI 和无线 LAN)的支持不多。如果您打算使用以太网网络,请继续阅读。如果不是,请不要绝望——一些非常有希望的开发工作正在进行中,以提供对其他类型网络的支持。

以太网

如果您足够幸运,可以连接到以太网网络,那么您仍然需要确定已安装的布线类型。目前使用了两种流行的布线类型,您需要查明已安装的是哪种,以便选择合适的网络接口卡类型。最流行的布线类型是 10base2,通常称为“细缆”,它使用 5 毫米直径的同轴电缆和 BNC(卡口型)连接器;以及 10baseT,通常称为“双绞线”或“非屏蔽双绞线”,它使用带有四个导体和 RJ-45(电话型)连接器的电缆。布线类型将有助于确定为您的 Linux 机器选择哪种类型的网络接口卡。

以太网卡

您的网络接口卡需要有一个适合您已安装的布线类型的连接器。许多现代网卡都配备了两种类型的连接器,这些通常被称为“组合”卡。您还应该考虑是否需要适用于 8 位插槽或 16 位插槽的网卡。16 位网卡性能更好,但通常稍贵一些。另一个要考虑的因素是总线类型。如果您使用的是 PCI 机器,那么自然需要一个适合 PCI 总线的 NIC。请注意:您还必须确保您选择的网卡类型受到 Linux 内核驱动程序的支持。最好避免使用“克隆”卡。虽然 Linux 支持一些流行网卡的克隆版本,但并非所有克隆版本都相同。为了确保没有问题,请购买正品或在购买前试用该卡。Ethernet-HOWTO 列出了 Linux 支持的网卡类型,并包含对每种网卡的描述。在花费任何钱购买网卡之前,您应该参考它。

HOWTO 建议您选择 16 位网卡,例如 3Com 3c503/16 或 SMC Elite 16/WD8013。如果您有 Vesa 局部总线或 PCI 主板,您可能会考虑其他网卡,例如 BOCA Research 网卡。您也可以选择 NE2000,但请注意,因为有些声称 100% 兼容的网卡并非 100% 兼容。(他们的声明基于“100% 软件兼容”,这意味着他们为 DOS 提供驱动程序,例如,允许 NetWare 访问。这些驱动程序对 Linux 无用。)

避免使用的网卡是 3Com 3c501 网卡(性能差且设计上有缺陷)以及 Cabletron 和 Xircom 网卡,因为不太可能为其产品提供免费的 Linux 驱动程序,因为这些公司选择在发布编程信息之前要求签订保密协议,这将使编写可自由分发的 Linux 驱动程序成为非法行为。

安装 NIC 时,您必须确保网卡的配置不与其他已安装的硬件冲突。有些网卡附带 DOS 程序来配置它们。它们使用可编程接口,您应该运行它以使用您想要的配置“引导”网卡。您应该特别注意 IRQ、控制端口地址和共享内存地址设置。这些设置中的每一个都必须可供您的 NIC 使用,并且计算机中的任何其他硬件都未使用。我使用 WD8003,引导设置为控制端口 0x280、IRQ 7 和共享内存 0xD0000。如果您使用专用硬件(如 SCSI 控制器或多端口串行卡),请小心,因为它们通常在相似的范围内使用 IRQ 或控制端口设置,并且可能会冲突。物理安装 NIC 后,下一步是检查您的内核是否已支持您的网卡。如果不支持,请重新编译内核以使其支持。检查您的内核是否已支持您的网卡的最简单方法是重新启动您的机器。通过读取内核在启动时打印的消息,检查内核是否正确检测到网卡。如果您的网卡被正确检测到,内核将打印如下消息

eth0: WD80x3 at 0x280, 00 00 C0 AD 37 1C WD8003,
        IRQ 7, shared memory at 0xd0000-0xd1fff.
        wd.c:v1.10 9/23/94 Donald Becker
        (becker@cesdis.gsfc.nasa.gov)

列出的设置应与您为网卡配置的设置相匹配。如果您的网卡未被正确检测到,请重新构建您的内核,以确保内核支持该网卡。这非常简单,您可能以前做过。您只需更改到 /usr/src/linux 目录并运行 make config。系统将提示您是否包含各种驱动程序。您需要回答“是”的最重要部分是

  • 网络支持?

  • TCP/IP 网络?

  • 网络设备支持?

  • 您的网卡驱动程序。

在您配置内核以支持您安装的所有硬件后,您需要执行 make dep; make 来构建内核。不要忘记执行 make zlilo,以便 lilo 在您重新启动时运行您的新内核。如果您对一切顺利感到满意,那么您可以重新启动您的机器并检查您的网卡是否像前面描述的那样被正确检测到。如果不是,请仔细检查您是否已正确完成所有操作以及您是否没有硬件冲突。如果您仍然有问题,请再次参考 Ethernet-HOWTO,因为它包含大量信息,可帮助您确定可能存在的问题。

软件配置

如果您仍然与我同在,那么您几乎可以运行了。您只需要运行几个命令即可开始测试您的网络连接。在您配置内核后,您必须配置您的 Linux 机器以适应您的网络。此时您需要担心 IP 地址。如果您幸运的话,您将有一位网络管理员,他会为您分配一个 IP 地址并告诉您要使用的网络和广播地址。如果不是,您将不得不找到另一种方法。一个好的方法通常是检查另一台已经工作的机器的配置。网络地址是指您连接到的整个网络的地址。它被广播,以便其他网络上的人知道如何到达您。您的主机 IP 地址是属于该网络的一个地址。这必须是您的且仅是您的,否则您将面临许多奇怪的问题,因此请确保您不使用其他人已在使用的主机地址。广播地址是一个特殊地址,允许任何人向您网络上的所有人发送数据。一些特殊服务使用此地址,并且将其配置为适当的值非常重要。您需要的另一个重要数字是您的“网络掩码”。这是一种机制,允许您的机器确定哪些主机地址是本地的(在同一网络上),哪些是远程的。以下示例是您期望找到的典型示例

IP address:             202.105.54.56
Network address:        202.105.54.0
Broadcast address:      202.105.54.255
Netmask:                255.255.255.0

一旦您拥有此信息,请确保您的 Linux 机器上安装了正确的软件。您必须特别注意确保您拥有的网络工具(ifconfig, route)与您使用的内核版本匹配。NET-2-HOWTO 描述了在哪里获取这些工具以及如何安装它们。如果您在没有命令行参数的情况下运行 ifconfig 程序,您将看到它列出了内核启动消息中提到的设备:“eth0”。这是您的以太网设备。需要使用以上信息对其进行配置,而 ifconfig 程序旨在做到这一点。使用如下命令行

ifconfig eth0 HOST netmask NETMASK\
     broadcast BROADCAST up

因此,对于以上示例,请使用命令行

ifconfig eth0 202.105.54.56\
        netmask 255.255.255.0\
        broadcast 202.205.54.255 up

如果您再次在没有命令行参数的情况下运行 ifconfig 命令,您应该看到它现在已配置了适当的值。

更多配置信息

一旦您配置了您的以太网设备,您就只剩下一个步骤了。如前所述,网络掩码告诉您的机器哪些地址是本地的,哪些是远程的。如果地址是本地的,您的 Linux 机器可以将任何数据报直接路由到以太网设备。如果它们是远程的,则数据报应发送到支持与 Internet 其余部分链接的路由。路由器也有一个地址,因此您需要从您的网络管理员处获取此地址。Linux 在内存中保留一个特殊表,以查找将数据报发送到哪里。此表称为路由表,可以使用 route 命令进行操作。在简单的安装中,正如您最有可能遇到的情况一样,您需要为您的以太网配置两条路由:一条用于您的本地网络,另一条告诉您的 Linux 机器如何处理任何远程主机的数据报。后一条路由称为“默认”路由。

路由命令是

route add NETWORK dev eth0
route add default gw ROUTER dev eth0

对于前面列出的示例(假设路由器地址如图所示)

route add 202.105.54.0 dev eth0
route add default gw 202.105.54.1 dev eth0

您可以使用 route -n 命令来显示路由表的内容。-n 参数表示将地址显示为数字,而不是尝试查找其名称,因为您尚未配置您的名称解析器。要配置您的名称解析器,您需要从您的网络管理员处找到“NameServer”或“DNS”的地址,并将此地址放在您的 /etc/resolv.conf 文件中的一行,如下所示:nameserver NNN.NNN.NNN.NNN,其中 NNN.NNN.NNN.NNN 是您的域名服务器的 IP 地址。

现在您应该能够 telnet 到其他 IP 主机,包括本地和远程主机。如果您已配置 Linux 机器的名称解析器,那么您可以使用它们的名称,否则您应该使用它们的地址。

此外,Linux 网络管理员指南 可从 sunsite.unc.edu/pub/Linux/docs/LDP/ 目录获取,并且可以从 SSC(Linux Journal 的出版商)和 O'Reilly & Associates 订购纸质版。

Terry Dawson (terryd@extro.ucc.su.oz.au) 在分组交换数据通信方面拥有近 10 年的经验,并出于乐趣维护 NET-2-HOWTO 和 HAM-HOWTO 文档。Terry 热衷于看到 Linux 在业余无线电应用中得到广泛使用。

加载 Disqus 评论