RHCSARHCE 红帽Linux认证学习指南(第7版)EX200 & EX300
上QQ阅读APP看书,第一时间看更新

认证目标3.06 网络配置与故障排除

至此,我们已经介绍了IP寻址和相关命令的基本用法,现在该是分析相关配置文件的时候了。这些配置文件决定了在引导过程中网络连接是否启用。如果启用,这些配置文件也决定了网络地址和路由方式是按文档要求静态配置的还是通过诸如dhclient的命令动态配置的。

基本的网络配置只能验证网络上的系统可以用它们的IP地址进行通信。但这还不够。如果主机名解析不能起作用,则网络配置无法判断系统是否连接到server1.example.com这样的系统或者像www.mheducation.com这样的URL地址,因此仅用网络配置是不够的。

实际经验

最常见的网络故障是物理问题引起的。这里假定我们已经检查了全部网络连接。对于虚拟机,这意味着虚拟机上或物理主机上的虚拟网卡不会被意外删除。

3.6.1 网络配置文件

如果网络配置有问题,第一件事情是检查网络的当前状态。为此执行以下命令:

        # systemctl status network

RHEL 7使用网络管理器服务来监视和管理网络设置。通过使用nmcli命令行工具,可以与网络管理器交互,显示网络设备的当前状态:

        # nmcli dev status

这个命令列出所有已经配置的设备和活动的设备。如果在列表中,某一个关键设备如eth0没有标为已连接,说明网络连接可能已经断开,或者设备未被配置。关键的配置文件包含在/etc/sysconfig/network-scripts目录中。

有时会出现错误。如果禁用了一个网络适配器或无线连接中断,一个简单的解决办法是重新启动网络连接。下面这个命令用当前配置文件重新启动网络连接:

        # systemctl restart network

实际经验

始终使用systemctl来执行网络脚本。不要直接运行RHEL 7 /etc/init.d/network脚本,因为此时脚本可能无法干净地执行。

如果简单地重启网络连接服务无法解决问题,则需要分析配置文件。RHEL在/etc/sysconfig/network-scripts目录中存储和检索网络连接信息。使用可用的Red Hat配置工具,不需要直接编辑这些文件,但是知道它们包含在此目录中是有帮助的。表3-6显示了一些具有代表性的文件。

表3-6 /etc/sysconfig/network-scripts目录中的文件

1. /etc/sysconfig/network文件

当执行ip addr show命令时没有任何输出信息,则表示所有网络设备都处于禁用状态。这时首先要做的就是检查/etc/sysconfig/network配置文件的内容。这是一个很简单的文件,通常包含一行或两行配置代码。一些系统被配置为通过DHCP检索地址信息,此时该文件通常为空。

如果/etc/sysconfig/network文件包含设置NETWORKING=no,则表示/etc/init.d/network脚本没有启动任何网络设备。如果所有的网络设备都使用同一个IP地址,则其他与网络有关的指令还有GATEWAY。否则此配置或者受dhclient命令支持,或者通过专用网络设备的IP地址信息(即/etc/sysconfig/network-scripts目录中的配置文件)设置的。

2. /etc/sysconfig/network-scripts/ifcfg-lo文件

讲到/etc/sysconfig/network-scripts目录,网络连接的基础也许是回环地址(loopback)。这个地址是在此目录的ifcfg-lo文件中设置的。这个文件的内容可以理解此目录中的文件应用于网络设备的方式。默认情况下,在这个文件中有以下内容,行首是回环设备的名称:

        DEVICE=lo

紧接着是IP地址(IPADDR)、网络掩码(NETMASK)和网络IP地址(NETWORK)以及相应的广播地址(BROADCAST)。

        IPADDR=127.0.0.1
        NETMASK=255.0.0.0
        NETWORK=127.0.0.0
        BROADCAST=127.255.255.255

接下来的几行指定设备在引导过程是否需要启动以及设备的常用名称:

        ONBOOT=yes
        NAME=loopback

3. /etc/sysconfig/network-scripts/ifcfg-eth0文件

ifcfg-eth0文件的内容依赖于第一个以太网络适配器的配置方式。例如,分析这样一个情形:网络连接只是为系统安装而设置的。GUI安装过程中在配置主机名时,如果没有配置网络连接,则不会在这个系统上配置网络连接。此时,ifcfg-eth0文件至少包含以下指令:

        HWADDR="F0:DE:F3:06:C6:DB"
        TYPE=Ethernet

当然,如果在安装过程中没有配置网络连接,就没有理由在引导过程中启动网络接口:

        ONBOOT="no"

默认情况下,RHEL 7使用一个名为网络管理器(Network Manager)的服务来管理网络设置。为确保该服务在运行,可执行systemctl status NetworkManager命令。网络管理器中包含nmcli,这是一个命令行工具,用来控制该服务的状态及应用网络配置更改。

除了使用nmcli修改配置,还可以直接修改设备配置文件。对此目的,图3-10中的配置文件提供了一个指南。

图3-10 手动配置eth0

其中大部分指令都很简单。它们将设备定义为一个名为eth0的以太网卡,并使用了定义的IP地址、子网掩码、默认网关和DNS服务器。当然,如果想使用DHCP服务器,则可以省略文件最后5行中指定的静态网络地址信息,并修改如下的提示符:

        BOOTPROTO=dhcp

保存文件后,还需要把所做的修改通知给网络管理器。这可以通过执行下面的命令(con是connection的简写)实现:

        # nmcli con reload
        # nmcli con down eth0
        # nmcli con up eth0

稍后将介绍如何用网络管理器的命令行工具来修改网络设备的配置参数。

4. /etc/sysconfig/network-scripts/目录中的其他文件

/etc/sysconfig/network-scripts目录中的绝大多数文件实际上都是脚本。换言之,它们是由一系列文本命令组成的可执行文件。其中大多数命令的脚本都是建立在ifup和ifdown命令之上且根据网络设备类型定制的文件。假如有一条专用的路由需要配置,则配置的参数必须保存此目录中一个专用文件中,且文件要用route-eth0这样的名称。这个专用的路由需要定义一个到远程网络地址/网络掩码对的网关。下面这个示例以第1章介绍的系统为基础,可能包含以下指令:

        192.168.100.0/24 via 192.168.122.1

3.6.2 网络配置工具

Red Hat提供了几个工具用于配置RHEL 7中的网络设备。第一个是网络管理器的命令行工具nmcli。如果喜欢基于文本的图形工具,则可在虚拟终端启动nmtui。另外,网络管理器连接编辑器(Network Manager Connections Editor)是一个GTK+ 3应用程序,可使用命令nm-connection-editor在GUI命令行启动。GNOME shell也包含一个图形实用工具,可通过单击Applications | Sundry |Network Connections打开。

1. nmcli配置工具

对于相同的网络接口,网络管理器可以存储不同的配置文件,也称为连接。这就允许从一个配置文件切换到另一个配置文件。例如,对于一个笔记本电脑的以太网适配器,有一个家庭配置文件和工作配置文件,并根据连接到的网络在这两个配置文件之间切换。

通过运行以下命令,可在网络管理器中显示所有已配置的连接:

        # nmcli con show
        NAME  UUID                                    TYPE            DEVICE
        eth0  394f6436-5524-4154-b26e-6649b4d29027   802-3-ethernet  eth0

为了演示如何使用nmcli设置不同的连接配置文件,我们为eth0创建一个新连接:

        # nmcli con add con-name "eth0-work" type ethernet ifname eth0

然后可配置静态IP地址和默认网关,如下所示:

        # nmcli con mod "eth0-work" ipv4.addresses ↲
        "192.168.20.100/24192.168.20.1"

可以运行nmcli con show connection-id来显示某个连接的当前设置。在网络管理器的命令行工具中还可以修改其他属性。例如,要在eth-work连接上添加一个DNS服务器,可执行下面的命令:

        # nmcli con mod "eth0-work" +ipv4.dns 192.168.20.1

最后,要切换到新的连接配置文件,可执行下面的命令:

        # nmcli con up "eth0-work"

使用下面的命令,可防止在引导时自动启动连接:

        # nmcli con mod "eth0-work" connection.autoconnect no

2. nmtui配置工具

顾名思义,此工具提供了基于文本的用户界面,可从命令行终端启动。执行nmtui命令即可启动此工具。对于一个控制台工具而言,需要按Tab键在不同选项之间切换,按空格键或回车键来选择高亮显示的选项。

按下方向键直到Quit变成高亮,再按下回车键。现在,为/etc/sysconfig/network-scripts目录中的ifcfg-eth0文件生成一个备份。利用diff命令,图3-11比较了两个不同配置的结果。一个配置是在安装过程中的用DHCP协议配置的eth0网卡配置,另一个配置是用nmtui工具采用静态IP地址配置的。

图3-11 静态网络配置与动态网络配置之间的差异

表3-7详细说明了图3-11中的指令。

表3-7 /etc/sysconfig/network-scripts目录中的网络配置指令

3.6.3 练习3-2:配置一个网卡

本练习用网络管理器中基于文本的用户接口工具配置第一个以太网卡。我们只需要一个命令行接口。至于此命令行是在GUI模式还是虚拟终端中并不重要。为了配置一个网卡,必须执行以下操作:

(1)备份第一个以太网卡的当前配置文件。通常这个文件是ifcfg-eth0,它保存在/etc/sysconfig/network-scripts目录中。对于其他接口名称,如em1,做相应的替换(提示:使用cp而不是mv命令)。

(2)执行nmtui命令。

(3)在出现的菜单中,Edit a Connection应该处于高亮状态。如有必要,按方向键或TAB键直到它变为高亮为止。然后按回车键。

(4)在出现的屏幕中,第一个以太网卡应该处于高亮状态。如果是,则按回车键。

(5)在图3-12的Edit Connection窗口中,IPv4 CONFIGURATION下的Automatic选项可能已经选中。如果是,则选取它并按回车键;然后选择Manual。

图3-12 Edit Connection窗口

(6)选中IPv4 CONFIGURATION右侧的Show选项,并按回车键。这将展开当前的IPv4设置。

(7)输入系统的IP地址信息。图中显示的参数是根据第1章为server1.example.com系统设置的参数。完成后,选择OK按钮,并按回车键。

(8)回到设备屏幕。确保Quit按钮已高亮显示,然后按回车键。

(9)用ifdown eth0命令断开第一个以太网卡,然后用ifup eth0命令重新启用它,然后用ip addr show eth0和ip route命令检查配置结果。网卡的配置参数和相应的路由表应该反映新的配置参数。

(10)为了恢复到原来的配置,把ifcfg-eth0文件恢复到/etc/sysconfig/network-scripts目录中,并用systemctl restart network命令重新启动网络。

网络管理器连接编辑器

现在开始用到RHEL 7的默认图形网络管理工具,即网络管理器连接编辑器(Network Manager Connections Editor)。由于多个网络连接上的用户很多,网络管理器需要在无线网络与以太网络连接之间实现无缝切换。但是这更适用于可移植系统,而非服务器。为此,我们需要知道如何用这个工具配置一个网卡。

网络管理器连接编辑器并不是一个新工具,它被用在Fedora上已经好几年了,只在GUI模式下运行。为启动它,可以执行nm-connection-editor命令。它可以打开如图3-13所示的网络连接工具。

图3-13 网络管理器的连接编辑器

从图3-13中可以看出,这个工具列出了检测到的第一个以太网卡的连接配置文件。还支持配置其他类型的网络,如无线连接、可以连接到3G和4G网络的移动宽带网卡以及数字用户线路(Digital Subscriber Line, DSL)连接。在一个普通的服务器上,重要的是连接的可靠性,而这仍然要靠标准的有线以太设备。

选取第一个以太设备(eth0)的连接配置文件并单击Edit,然后选择IPv4 Settings选项卡,这会打开如图3-14所示的窗口。除非以前已经配置过,否则系统认为此网卡使用DHCP服务器提供的配置参数。

图3-14 用网络管理器连接编辑器来编辑以太网连接

单击Method下拉文本框。虽然它支持用几种不同的方法配置一个网卡,但在本例中我们只对手动(Manual)配置感兴趣。选择手工配置选项,则此窗口中的Address文本框里不再处于无效状态,现在输入系统的IP地址。根据第1章介绍的server1.example.com系统,相应的选项内容如下:

IP地址(IP Address)192.168.122.50。

网络掩码(Network Mask)255.255.255.0(在这个字段中,采用CIDR表示的24也是可接受的)。

网关地址(Gateway Address)192.168.122.1。

DNS服务器(DNS Server)192.168.122.1。

搜索域(Search Domains)example.com

此连接需要的IPv4寻址模式(Require Ipv4 Addressing For This Connection To Complete)取消选中。

如果输入正确,则第一个以太网卡配置窗口的标题与如图3-14中Connection name文本框中的内容一致。对于本例的配置,全部配置参数保存在/etc/sysconfig/network-scripts目录中的ifcfg-eth0文件中。

3.6.4 配置名称解析

网络配置的最后一步通常是名称解析。换句话说,本地系统是否有必要的信息将域名(如mheducation.com)转换成IP地址(如198.45.24.143)。

Unix被开发出来时,名称解析很容易。当Internet的前身首次投入使用时,全世界的计算机网络有4个主机,分别放在4所不同的大学内。很容易建立一个静态文件,在其中包含每个主机的名称和对应的地址。这个文件后来发展成为Linux中的/etc/hosts。

如今,Internet变得更加复杂。虽然可以试着在/etc/hosts文件中建立一个数据库,包含Internet上的每个域名和IP地址,但是这样做耗费的时间太多,而且也不是一种可以扩展的解决方案。因此,大部分用户会建立与DNS(域名服务)服务器的连接。在RHEL 7中,这些信息仍然记录在/etc/resolv.conf配置文件中。作为RHCE,需要知道如何配置一个只缓存DNS服务器,第13章将介绍此主题。DNS服务器的配置不是RHCSA的认证目标。

在较小的网络中,一些管理器将/etc/hosts文件作为一个数据库,包含本地网络中的每个系统的名称和IP地址。如果愿意,管理员甚至可以包含Internet上的域的几个IP地址,不过如果这些Internet域自己修改了DNS,这种设置就会失效。

但是,如果已经在/etc/hosts中配置了到DNS服务器的连接和一些系统,首先会搜索什么呢?这就是/etc/nsswitch.conf配置文件的用途,它指定了各种名称服务数据库(包含主机名)的搜索顺序。

3.6.5 主机名配置文件

RHEL 7至少有4个主机名配置文件是比较重要的,它们是/etc/hostname、/etc/hosts、/etc/resolv.conf和/etc/nsswitch.conf。这四个文件一起提供了本地主机名、主机名和IP地址的本地数据库、一个或多个DNS服务器的IP地址以及这些数据库的访问顺序。

1. /etc/nsswitch.conf文件

/etc/nsswitch.conf文件定义了从验证到名称服务的所有内容的数据库搜索优先级。作为名称服务器转换文件,它包含了下面这一行内容,该内容决定了先搜索哪个数据库。

        hosts: files dns

当一个系统接收到搜索一个类似outsider1.example.org主机名的要求时,上述的指令表示先搜索/etc/hosts文件。如果在/etc/hosts文件中找不到这个名字,下一步就到可用的已配置DNS服务器上搜索,即通常到在/etc/resolv.conf文件中配置的服务器上搜索。

解析库还使用/etc/host.conf文件中的信息。该文件中的条目是:

        multi on

这告诉系统,返回/etc/hosts中映射到相同主机名的所有IP地址,而不是仅返回第一个条目。

2. /etc/hosts文件

/etc/hosts文件是一个静态数据库,它保存了主机名(或FQDN名)和它们的IP地址。它适用于小型的、相对静态的网络。而对于经常变化的网络,使用这个文件是一件非常痛苦的事。每次在网络中增加或移除一个系统,都要修改这个文件的内容——不仅要修改本地系统,而且要修改网络上的其他所有系统。

它非常适合于第1章创建的本地网络系统。一个简单的hosts文件可能包含类似于下面的内容:

        127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
        ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
        192.168.122.50 server1.example.com server1
        192.168.122.150 tester1.example.com tester1
        192.168.100.100 outsider1.example.org outsider1

有时可能要在一个IP地址上创建多个条目。例如,可添加以下记录以指定Web服务器和FTP服务的IP地址。

        192.168.122.50 www.example.com
        192.168.122.150 ftp.example.com

3. /etc/resolv.conf文件

记录DNS服务器位置的标准文件仍是/etc/resolv.conf文件。通常情况下它将包含一到两个记录,如下所示:

        search example.com
        nameserver 192.168.122.1

在search指令后附带example.com域名后用于搜索简单的主机名。文件中的nameserver指令定义了已配置的DNS服务器的IP地址。如果无法确定此DNS服务器是否可运行,则执行下面的命令之一:

        # dig @192.168.122.1 mheducation.com
        # host mheducation.com 192.168.122.1

如有必要,替换/etc/resolv.conf文件中与nameserver指令关联的IP地址。在该文件中可指定最多3个nameserver指令。

实际经验

直接编辑/etc/resolv.conf文件不是一个好主意。如果使用另一个工具(如nmcli、连接编辑器或设备配置文件中的DNS1指令)配置了DNS服务器,网络管理器将覆盖你在直接编辑该文件时做出的任何修改,除非在ifcfg文件中使用PEERDNS覆盖了此行为。

3.6.6 主机名配置选项

在引导过程中,网络服务根据/etc/hostname文件的内容确定本地主机名的值。主机名应该设置为类似tester1.example.com这样的一个FQDN名字。如前所述,这是一个简单的文件,其中主机名可能表示为如下形式的一个指令:

        tester1.example.com

当然,我们可以用hostname newname 修改主机名的值。但这样的修改只是临时性的,无法在/etc/hostname文件中反映出来。要使修改永久生效,需要使用hostnamectl set-hostname newname命令。

故障情景与解决方案