·Red Hat 7.0 中负责网络接口的配置文件
·使用 ifconfig 检查和配置接口
·添加和编辑静态路由
·使用 netstat 对网络接口进行监视/排除故障
关键文件和脚本
网络接口初始化的实际过程(有时也称做“启动接口“)是由一组配置文件和脚本控制的,这些文件和脚本大多数在/etc 目录下。这些配置文件告诉 Linux 它的 IP 地址、主机名和域名;脚本则负责网络接口的初始化。
遗憾的是,不同分发版(distribution)中文件位置和命名约定至今还没有统一的标准。为给本文提供具体的示例,将基于广泛使用的 Red Hat 7.0 包做出描述。请记住,若您的分发版不是使用 Red Hat 或不是基于 Red Hat 约定(如 Mandrake 分发版),在此所引用的一些文件会位于别的目录中或有其它的名称。然而,网络效果和实际效果是一样的 — 将存储在一系列配置文件中的网络信息传递给脚本,然后用脚本初始化接口和网络路由。
涉及初始化和配置网络接口的关键文件有:
·/etc/hosts (将主机名映射到 IP 地址)
·/etc/networks (将域名映射到网络地址)
·/etc/sysconfig/network (打开或关闭联网,设置主机名和网关)
·/etc/resolv.conf (设置名称服务器或 DNS 服务器的 IP 地址)
·/etc/rc.d/rc3.d/S10network (在引导时激活已配置的以太网接口,由运行级别目录 /etc/rc.d/rcN.d/ 中的符号链接调用)
·/etc/sysconfig/network-scripts 中一些文件的集合。这些文件包括用于网络连接的主要配置,以及提供接口状态和控制功能的符号链接。
/etc/hosts
/etc/hosts 是将 IP 地址和主机名联系起来的简单文本文件。 TCP/IP 网络中的每台计算机都必须有唯一的 IP 地址。hosts 文件只允许用户将主机名与 IP 地址联系起来,以便当访问计算机时使用该名称,而不用输入一长串数字。/etc/hosts 中的每一项都依次包含一个 IP 地址、空白和主机名和/或别名。井号(#)表示注释开始。例如:
# /etc/hosts
# last updated 12/3/2000
127.0.0.1 loopback localhost # loopback (lo0) name/address
192.168.1.5 janus.syroidmanor.com janus
192.168.1.6 thumper.syroidmanor.com thumper
192.168.1.7 donovan.syroidmanor.com donovan
192.168.1.8 raidserver
192.168.1.20 phoenix.syroidmanor.com phoenix
192.168.1.15 hydras.syroidmanor.com hydras
在上面显示的 Hosts 文件中,IP 地址 192.168.1.5 映射到主机 janus.syroidmanor.com ,并且分配给它一个备用主机名(或别名)janus。尽管 DNS 已经取代了这个主机文件,但出于以下原因仍然使用它:
·大多数系统都有一个包含本地网络上的关键主机的名称和地址信息的小主机表。当 DNS 未运行时,例如,在最初系统启动期间,则使用该表。即便本地 DNS 服务器正在运行,在每个系统上也应该有一个小 hosts 文件,该文件包含一个主机本身项、一个 localhost 项以及局域网上任何主要的网关和服务器项。
·未连接到因特网或其他网络的小网络不需要 DNS 服务。然而,这些网络上的主机也需要知道如何定位同一网络上的其它主机。
/etc/networks
就如主机有名称和地址一样,为方便起见,也可以为网络和子网命名。 /etc/networks 文件在布局上与 /etc/hosts 很相似,只不过名称和地址互换了一下。
# /etc/networks for syroidmanor.com
localnet 127.0.0.0 #loopback
syroid-C1 192.168.1 #development, class C
syroid-C2 192.168.2 #support, class C
在上面的示例中,可将网络名称 syroid-C1 用于脚本或任何命令行实用程序中来引用 192.168.1 这个 C 类网。
/etc/sysconfig/network
将 /etc/sysconfig/network(注意与 /etc/networks 文件不同,这个 network 是单数而不是复数)用于指定所期望的网络配置信息;在引导时,有几个脚本要使用它。该文件可以包含下列所示的一个或多个关键字/值对:
NETWORKING=YES|NO -- YES 表示需要配置网络;NO 表示不需要配置网络。
HOSTNAME=hostname — 主机的全限定域名;为与较老的程序兼容,这应该与在 /etc/hosts 中的主机项相匹配。
GATEWAY=gw-ip — 网络网关的 IP 地址。
GATEWAYDEV=gw-dev — 网关设备的名称(例如 eth0)。
NISDOMAIN=dom-name — 表示 NIS 域,如果有的话。
下面是 /etc/sysconfig/network 最小配置的示例:
NETWORKING=yes
HOSTNAME=phoenix.syroidmanor.com
GATEWAY=192.168.1.1
/etc/resolv.conf 和 /etc/rc.d/rc3.d/S10network
/etc/resolv.conf 是网络用来确定主机解析的关键文件之一。在此可以标识最多三个名称服务器;如果列在第一位的服务器未对查询做出响应,则后面两个起到备用的作用。domain 项定义缺省域名。解析器(顺便提一下,该解析器不是一个单独的进程,而是由网络进程调用的例程库)将这里所列出的域名附加在任何不包含句点的主机查询上。
# /etc/resolv.conf
# domain name resolver config file
domain syroidmanor.com
nameserver 192.168.1.7
nameserver 192.168.1.10
nameserver 165.142.268.19
在上面所显示的示例中,如果提交给解析器的查询是想要查询找主机 phoenix(注意,没有点),则将该域附加到这个请求之后,这会将该查询扩展为 phoenix.syroidmanor.com。若需要了解更多详细信息和可以使用的选项,请输入 man resolv.conf 。
#p#副标题#e#
/etc/rc.d/rc3.d/S10network 是指向 /etc/rc.d/init.d/network 脚本的符号链接。当系统达到运行级别 3 时,它负责初始化所有已配置的网络接口。在这里我们不想花时间来详细讨论该文件后面的逻辑,因为该文件主要是调用本节中所提到的其它脚本和程序。但是,如果您对 S10network 中初始化各种网络组件和服务的顺序感兴趣的话,则可以使用 less /etc/rc.d/rc3.d/S10network 命令来仔细研读它。
/etc/sysconfig/network-scripts/ 目录
最后,通常可在 /etc/sysconfig/network-scripts/ 目录中查找到下列文件:
·/etc/sysconfig/network-scripts/ifup
·/etc/sysconfig/network-scripts/ifdown
·/etc/sysconfig/network-scripts/network-functions
·/etc/sysconfig/network-scripts/ifcfg-interface-name
·/etc/sysconfig/network-scripts/ifcfg-interface-name:clone-name
·/etc/sysconfig/network-scripts/chat-interface-name
·/etc/sysconfig/network-scripts/dip-interface-name
·/etc/sysconfig/network-scripts/ifup-post
在随后的几页中,我们将简要地看一下这些关键文件,了解它们做什么和包含什么。
……/network-scripts/,第一部分
/etc/sysconfig/network-scripts 中的 ifup 和 ifdown 项实际是分别指向 /sbin/ifup 和 /sbin/ifdown 的符号链接。这两个脚本是在该目录下唯一应该直接调用的脚本,并且它们按需要调用所有其它脚本。
ifup 和 ifdown 通常只带一个参数:设备名(例如 eth0)。系统在引导过程期间用参数“boot“调用它们,以便于不激活没有被配置成在系统启动时初始化的设备(请参阅下面关于 interface-name 描述中的 ONBOOT=no)。
network-function 不是公共文件。它包含这个目录中的几个脚本所需的函数。具体地说,它包含了用于处理替代接口配置的大多数代码。
……/network-scripts/,第二部分
配置文件 ifcfg-interface-name 和 ifcfg-interface-name:clone-name 包含了初始化接口所需的大部分详细信息。第一个文件定义接口,而第二个文件仅包含与“别名“(或替代)接口相关的部分定义。例如,网络地址或许不同,但其它可能会一样。
在 ifcfg 文件中定义的各项目取决于接口类型;下列值很常见:
·DEVICE=name ,其中 name 是物理设备名
&mi