36
《计算机网络应用技术与实践》/ 实验九:基于 Linux 的 DNS 智能解析 实验九:基于 Linux 的 DNS 实现 一、实验目的 1、了解 DNS 的基本原理和主要作用; 2、掌握基于 CentOS 操作系统使用 BIND 实现 DNS 的具体方法; 3、掌握 BIND 的基本配置; 4、掌握使用 BIND 实现 DNS 智能解析; 5、掌握使用 BIND 实现 DNS 的高级功能; 6、掌握 DNS 测试工具的使用方法。 二、实验学时 2 学时 三、实验类型 综合性 四、实验需求 1、硬件 每人配备计算机一台。 2、软件 Windows 7 操作系统,安装 GNS3 网络仿真软件、VirtualBox 桌面虚拟软件。 3、网络 实验室局域网支持,能够访问校园网和互联网。 4、工具 五、实验理论 1. CentOS 操作系统的基本操作和 Shell 命令; 2. Ubuntu Desktop 操作系统的基本操作; 3. DNS 的工作原理与报文结构; 4. DNS 的区域类型; 5. DNS 的记录类型; 6. BIND 配置与应用。

实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

实验九:基于 Linux 的 DNS 实现

一、实验目的

1、了解 DNS 的基本原理和主要作用;

2、掌握基于 CentOS 操作系统使用 BIND 实现 DNS 的具体方法;

3、掌握 BIND 的基本配置;

4、掌握使用 BIND 实现 DNS 智能解析;

5、掌握使用 BIND 实现 DNS 的高级功能;

6、掌握 DNS 测试工具的使用方法。

二、实验学时

2 学时

三、实验类型

综合性

四、实验需求

1、硬件

每人配备计算机一台。

2、软件

Windows 7 操作系统,安装 GNS3 网络仿真软件、VirtualBox 桌面虚拟软件。

3、网络

实验室局域网支持,能够访问校园网和互联网。

4、工具

五、实验理论

1. CentOS 操作系统的基本操作和 Shell 命令;

2. Ubuntu Desktop 操作系统的基本操作;

3. DNS 的工作原理与报文结构;

4. DNS 的区域类型;

5. DNS 的记录类型;

6. BIND 配置与应用。

Page 2: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

六、预备知识

1、BIND

Linux 下架设 DNS 服务器通常使用 BIND 来实现的。BIND 是 Berkeley Internet Name Domain

Service 的简写,它是一款实现 DNS 服务的开源免费软件。BIND 原本是美国 DARPA 资助伯克里

大学(Berkeley)开设的一个研究生课题,后来经过多年的变化发展,目前已成为世界上使用最为

广泛的 DNS 服务器软件。Internet 上绝大多数的 DNS 服务器都是由 BIND 来实现的。

2、Ubuntu Desktop

Ubuntu 是一个以桌面为主的免费开源的 Linux 操作系统。它是基于 Dabian Linux,支持 x86、

amd64 和 ppc 架构,由全球化的专业开发团队(Canonical Ltd)打造的操作系统。

Ubuntu 有机地结合了 Debian 高效的系统底层和面向用户的桌面应用。在技术能力和可用性上,

Ubuntu 都有着上佳表现。

Ubuntu 是目前最受个人用户欢迎的 Linux 发行版之一,具有较高的易用性。不论是初学者还

是有一定 Linux 经验的用户,都可以很快地融入 Ubuntu 中。

由于基于 Debian 体系,Ubuntu 可以利用互联网上数量巨大的服务器作为软件来源。所以在应

用软件的获取方面,Ubuntu 相比其他 Linux 发行版具有一定的优势。在硬件兼容性上,Ubuntu 也

具有不错的表现,有助于将其应用到复杂的硬件环境当中。

3、nslookup 与 dig

nslookup 是操作系统广泛内置的 DNS 测试工具,Windows 和广泛的 Linux 发行版中都默认安

装了 nslookup,以用于 DNS 的查询和排错。

dig(域信息搜索器)命令是一个用于询问 DNS 域名服务器的灵活工具。它执行 DNS 搜索,

显示从受请求的域名服务器返回的答复。多数 DNS 管理员利用 dig 作为 DNS 问题的故障诊断,因

为它灵活性好、易用、输出清晰。不同于早期版本,BIND9 的 dig 实现允许从命令行发出多个查询,

除非被告知请求特定域名服务器,dig 将尝试/etc/resolv.conf 中列举的所有服务器。当未指定任何命

令行参数或选项时,dig 将对“. ”(根)执行 NS 查询。dig 功能比 nslookup 强很多,使用也很方

便。

4、请查阅资料,完成 nslookup 与 dig 的对比分析表。

表 4-1 DNS 测试工具对比分析一览表

序号 测试工具 版本号 安装环境 优缺点 应用场景

1 nslookup

2 dig

七、实验任务

本实验重点在于搭建一台基于 CentOS 操作系统的 DNS服务器,并测试其工作效果。

在本实验需要设计局域网环境,并使其能够接入互联网。在局域网中部署一台 DNS服务器(基

于 CentOS 7)和两台客户机(基于 Ubuntu Desktop),分别命名为 DNS Server、Host-1 和 Host-2。

在 DNS Server 上部署 DNS服务,并通过 Host-1 和 Host-2 进行测试。

Page 3: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

本实验在虚拟化软件 VirtualBox 中完成,具体包含以下 4个任务。

1、 完成网络规划与 DNS系统设计;

2、 在 VirtualBox 中创建实验用虚拟机,并安装相应操作系统;

3、 配置 DNS 服务器;

(1)配置 DNS 服务器的网络参数;

(2)在线安装 BIND

(3)配置域名系统的主配置文件 named.conf

(4)配置区域配置文件 xuchenggang.com.zone

(5)配置反向区域配置文件 192.168.31.zone

(6)检查配置文件并重启 DNS服务

4、 测试 DNS 解析效果;

八、实验内容及其步骤

说明:

1. 本实验在一台实体计算机上,通过 VirtualBox虚拟化软件完成;

2. 实体计算机的操作系统是 Windows 7,已安装 VirtualBox软件(版本为 5.0.8);

任务 1:完成网络规划与 DNS 系统设计

任务描述:

规划设计本实验所需的网络环境、网络拓扑网、IP地址,以及 DNS服务器

中的资源记录等内容。

步骤 1:设计网络拓扑

为简化内容、突出重点,本实验不在 GNS3 中构建虚拟网络环境,而直接在 VirtualBox 中创建

虚拟机,并通过“桥接网卡”方式,利用实体机所在的网络实现虚拟机之间的互访以及虚拟机访问

互联网,从而完成 DNS 服务器的搭建,域名解析结果测试等实验内容,具体设计如下。

1. 实体机可以访问互联网。

注意:此处要求实体机可以访问互联网,一是为了在 DNS 服务器(虚拟机)中在线安装

BIND的需要;二是为了实验后期对 DNS服务器工作效果进行测试之用。

2. 在 VirtualBox 中创建 3 台虚拟机,其中 1 台作为 DNS 服务器,命名为 DNS Server,安装

CentOS 操作系统,用于安装部署 DNS 服务。另外 2 台作为客户机,分别命名为 Host-1 和 Host-2,

全部安装 Ubuntu 操作系统,用于测试 DNS 服务器的工作情况。

3. 在 VirtualBox 中,将所有虚拟机网卡的连接方式设置成“桥接网卡”,这样,各台虚拟机就

可接入实体机所在的网络,既可实现虚拟机之间的访问,也可以通过实体机访问互联网。

4. 本实验的环境结构图如图 9-1 所示。

Page 4: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

图 9-1 网络拓扑

步骤 2:规划网络地址方案

根据对网络环境的设计,实验中所用到的网络为实体机所在网络。其网络参数(例如 IP 地址、

默认网关等)可以从网络管理员处获得,具体情况要根据实验环境的实际情况而定。

此处各台虚拟机的 IP 地址参数设置见表 9-1。

表 9-1 IP 地址规划表

序号 主机名称 IP 地址 网关

1 Host-1 192.168.31.50 / 24 192.168.31.1

2 Host-2 192.168.31.51 / 24 192.168.31.1

3 DNS Server 192.168.31.100 / 24 192.168.31.1

步骤 3:规划 DNS 服务器中的区域和记录设置

(1)区域设置

在 DNS Server 中 建 立 正 向 查 找 区 域 xuchenggang.net 和 反 向 查 找 区 域

31.168.192.in-addr.arpa。

(2)DNS Server中的记录资源

见表 9-2

表 9-2 DNS Server 中的记录资源

序号 区域名称 记录名称 记录类型 记录数据 备注

1 xuchenggang.net ftp A 192.168.31.200 正向查找区域

2 xuchenggang.net www A 192.168.31.201 正向查找区域

3 xuchenggang.net mail A 192.168.31.202 正向查找区域

4 xuchenggang.net web 别名 www.xuchenggang.net 正向查找区域

5 xuchenggang.net @ MX mail.xuchenggang.net 正向查找区域

6 xuchenggang.net @ NS dns.xuchenggang.net 正向查找区域

7 31.168.192.in-addr.arpa 192.168.31.200 指针 ftp.xuchenggang.net 反向查找区域

Page 5: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

8 31.168.192.in-addr.arpa 192.168.31.201 指针 www.xuchenggang.net 反向查找区域

9 31.168.192.in-addr.arpa 192.168.31.202 指针 mail.xuchenggang.net 反向查找区域

任务 2:在 VirtualBox 中创建虚拟机并安装操作系统

任务描述:

在 VirtualBox 中创建 3台虚拟机,并分别命名为 DNS Server、Host-1和

Host-2。其中,DNS Server安装 CentOS 7操作系统,Host-1和 Host-2安装

Ubuntu 操作系统。

步骤 1:创建 CentOS 7 系统的虚拟机

本步骤创建的虚拟机安装 CentOS 7 操作系统,用于配置 DNS 服务器。

(1)下载 CentOS 7系统镜像文件

下载 CentOS 7 系统镜像文件,并保存在硬盘上。

可通过官方网站(https://www.centos.org)获得安装镜像。

可通过课程网站(http://ethernet.51xueweb.cn)下载 64 位版本镜像。

(2)新建虚拟机

打开 VirtualBox,新建虚拟机。主机名为“DNS Server”,类型为“Linux 2.6/3.x/4.x(64bit)”,

内存大小为 512MB,硬盘大小为 8GB。将网卡连接方式设为“桥接网卡”。

(3)在虚拟机上安装 CentOS 7

在 VirtualBox 中,将 CentOS 7 镜像文件装入虚拟机 DNS Server 的光驱,然后完成 CentOS 7

的安装。具体过程参见 “实验六→任务 2”中的有关内容,此处省略。

注意:在安装 CentOS 7操作系统过程中,会要求用户创建 ROOT用户的密码,请牢记该密

码,以免后期无法正常登录 CentOS 7系统。

步骤 2:创建 Ubuntu 系统的虚拟机 Host-1。

本步骤创建的虚拟机安装 Ubuntu Desktop 15.10 操作系统,作为客户机,用来测试 DNS 服务器

的工作效果。

(1)获取 Ubuntu Desktop 15.10镜像文件。

可通过官方网站(http://www.ubuntu.org.cn)获得安装镜像。

可通过课程网站(http://ethernet.51xueweb.cn)下载安装镜像。

(2)创建 Ubuntu Desktop 虚拟主机。

创建 Ubuntu Desktop 虚拟主机,虚拟主机名称为“Host-1”,类型为“Ubuntu(32-bit)”,内存

大小为 512MB,硬盘大小为 10GB,网卡连接方式为“桥接网卡”。

(3)安装 Ubuntu Desktop 15.10

在虚拟主机中加载 Ubuntu Desktop 15.10 镜像文件,并启动 Ubuntu Desktop 虚拟主机,Ubuntu

Desktop 15.10 的具体安装步骤如图 9-2~图 9-9 所示。

Page 6: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

图 9-2 选择“中文(简体)”,然后点击【安装 Ubuntu】

图 9-3 确定计算机的基本情况,然后点击【继续】

图 9-4 点击【继续】

Page 7: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

图 9-5 确定时区地点,保持默认值 Shanghai,然后点击【继续】

图 9-6 选择键盘布局为“汉语”,然后点击【继续】

图 9-7 设置用户名和密码,然后点击【继续】

Page 8: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

图 9-8 安装过程

图 9-9 安装完毕,重启计算机

图 9-10 Ubuntu 的登录界面,输入在安装过程中设置的登录密码

Page 9: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

图 9-11 Ubuntu 的桌面

(4)设置 Host-1 的 IP 地址

在 Ubuntu 系统中,设置 IP 地址的过程见图 9-12~图 9-16 所示。

图 9-12 点击【系统设置】按钮 图 9-13 点击【网络】图标

图 9-14 点击【选项】按钮

Page 10: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

图 9-15 点击【IPv4 设置】→【手动】,添加本机 IP 地址及 DNS 服务器地址

图 9-16 IP 地址设置完成后,点击左上角的关闭按钮

步骤 3:创建 Ubuntu 系统的虚拟机 Host-2。

参照 Host-1 的创建过程,创建 Host-2。完成 Ubuntu 操作系统的安装,并根据表 9-1 中的规划,

将其 IP 地址设置为 192.168.31.51,其他网络参数与 Host-1 相同。

任务 3:配置 DNS 服务器

任务描述:

配置虚拟机 DNS Server(已安装 CentOS 7 操作系统)的网络地址,使其

能够访问互联网,然后在线安装 BIND,并根据任务 1中的有关规划,设置区域

及记录内容,从而完成 DNS服务器的配置。

步骤 1:配置 DNS 服务器的网络 IP 地址

本步骤通过修改 DNS 服务器网卡的配置文件,将网卡获得 IP 地址的方式设置为静态方式,并

Page 11: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

且根据任务 1 中的规划,将网卡的 IP 地址设置为 192.168.31.100/24,网关为 192.168.31.1。

(1)查看虚拟机 DNS Server的网卡信息

在 Linux 下,root 用户是最高级用户。我们在修改网络配置之前,需要以 root 用户登录才有权

限操作,登录密码为用户在安装过程中设置的 ROOT 密码。

登录成功后,可首先通过 ip addr 命令查看本机 IP 地址。

# ip addr

//查看 IP 地址。 CentOS 7 中默认使用 ip 命令来进行 IP 地址相关操作,不再安装 ifconfig

命令。ip 命令和 ifconfig 命令一样,但是功能更加强大,并旨在取代后者。

从图 9-17 中可以看出,网卡的名字为“enp0s3”,暂无 IP 地址,无法上互联网。因此,接下来

需要对网络配置文件进行修改,使网卡“enp0s3”获得有效的 IP 地址(即 192.168.31.100/24),从

而可以访问互联网。

图 9-17 使用 ip addr 命令查看网卡 IP 地址信息

注意:

1. 此处所谓的“有效的 IP地址”,是指能够使 DNS Server虚拟机访问互联网的 IP地址。

该地址信息可以从网络管理员处获得,具体情况要根据实验环境的实际情况而定。此

处,将 DNS Server的 IP地址设置为静态 IP地址。

2. 不同的计算机,其网卡名可能不一样,在做实验时要注意。

(2)查看网卡配置件名

# ls /etc/sysconfig/network-scripts/

//ls 用于显示指定目录下的文件(夹)列表。

使用 ls 命令查看网卡配置文件所在的目录,可以看到其中的文件(夹)列表。其中,文件名

为“ifcfg-enp0s3”的文件就是本虚拟机的网卡配置文件(见图 9-18)

注意:由于不同计算机的网卡名可能不一样,因此此处的网卡配置文件名字还可能为其他

情况,需要根据实际情况进行确定。

图 9-18 网卡配置文件名为“ifcfg-enp0s3”

Page 12: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

(3)查看网卡配置文件内容

此处使用 vi 命令查看网卡配置文件 ifcfg-enp0s3 的初始内容。具体如下。

# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

//vi 命令用于查看/编辑指定文件的内容,以下为 ifcfg-enp0s3 文件的内容。

TYPE=Ethernet

//本网卡的类型为以太网网卡

BOOTPROTO=dhcp

//IP 地址的获得方式为 dhcp(即动态获取)

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

NAME=enp0s3

//网络连接名字是 enp0s3(根据网卡配置文件名的实际情况,此处的名字可能不同)

UUID=5c0d1d00-0ba6-4140-a025-d47f36b0efd3

DEVICE=enp0s3

//本设备名是 enp0s3(根据网卡配置文件名的实际情况,此处的设备名字可能不同)

ONBOOT=no

//不配置开机启动

(4)修改网卡配置文件的内容

修改时要注意

1、使用 vi 打开配置文件后,需按一下键盘上的字母“I”键,才能进入编辑状态。编辑

完成后,需按一下键盘上的“Esc”键先退出编辑状态,然后输入“:wq”并回车进行保存

(“:q”表示放弃存盘)。

2、编辑时注意区分大小写,例如“IPADDR=”不能写成“ipaddr=”。

网卡配置文件 ifcfg-enp0s3 修改后的结果如下

# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

TYPE=Ethernet

BOOTPROTO=static

//此处将 IP 地址的获得方式改为静态

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

Page 13: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

NAME=enp0s3

UUID=5c0d1d00-0ba6-4140-a025-d47f36b0efd3

DEVICE=enp0s3

IPADDR=192.168.31.100

//增加该语句,用“IPADDR=”来配置静态 IP 地址

NETMASK=255.255.255.0

//增加该语句,用“NETMASK”来配置子网掩码

GATEWAY=192.168.31.1

//增加该语句,用“GATEWAY=”来配置本机的默认网关

ONBOOT=yes

//将上述配置修改为开机启动

(编辑完成后,退出编辑状态并用:wq 存盘)

(5)重启网络服务

重启网络服务,使刚才对网卡配置文件的修改生效。

# systemctl restart network

(6)关闭防火墙,并禁止开机启动防护墙。

# systemctl stop firewalld

# systemctl disable firewalld

(7)验证网卡信息

再次使用 ip addr 命令查看网卡信息,可以看到,网卡 enp0s3 已经获得指定的 IP 地址信息(见

图 9-19)。命令如下

# ip addr show enp0s3

// 显示网卡 enp0s3 的 IP 地址信息

图 9-19 enp0s3 已经获得指定的 IP 地址

步骤 2:在线安装 BIND

Linux 下架设 DNS 服务器通常使用 BIND 来实现的。BIND 是 Berkeley Internet Name Domain

Service 的简写,它是一款实现 DNS 服务的开源免费软件。

(1)了解 BIND中的软件包

BIND 服务有关的软件包有如下几个:

bind

Page 14: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

BIND 服务器端软件,即 BIND 主程序。

bind-chroot

为 BIND 提供 chroot 机制的软件包,将 BIND 设定文件和程序限制在虚拟根目录下。如果不使

用 chroot 保护 BIND,可以不安装,但是推荐安装。为 bind 提供一个伪装的根目录以增强安全性(将

“/var/named/chroot/文件夹作为 BIND 的根目录”)

bind-utils

客户端搜索主机名的相关命令,提供 nslookup 及 dig 等测试工具

bind-libs

BIND 相关的库文件

(2)安装 BIND软件包以后生成的文件

使用 yum 命令安装 BIND 软件包,命令格式是:

yum -y install bind bind-chroot bind-utils bind-labs

安装完成后会生成以下文件

/etc/named.conf bind 主配置文件

/etc/named.rfc1912.zones 区域声明文件

/var/named/named.localhost 区域配置样例文件

(3)BIND 主要有三类配置文件

BIND 主要有三类配置文件:BIND 的主配置文件、区域声明文件和区域记录配置文件。

BIND 的主配置文件

BIND 主配置文件即 /etc/named.conf,里面有 BIND 的全局设置;

区域声明文件

区域声明文件即 /etc/named.rfc1912.zones,里面列举了本机中各个区域记录配置文件的位置/

类型/性质。实际上,在主配置文件 named.conf 中,使用“Include "/etc/named.rfc1912.zones"”语句

来调用区域声明文件。

区域配置文件

一个 DNS 服务器中可以设置多个区域配置文件,每一个区域配置文件指明了本 DNS 服务器所

负责解析的某个区域中 IP 和域名的对应关系,即各种记录内容,例如 A 记录、NS 记录等。

区域配置文件存放在 /var/named 目录下。

(4)安装 BIND

所用命令如下:

# yum –y install bind bind-utils bind-chroot bind-libs

安装过程会显示如图 9-20、9-21、9-22 的画面。

Page 15: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

图 9-20 开始安装 BIND

图 9-21 显示正在安装的 BIND 软件包

图 9-22 显示已经安装好的软件包内容

步骤 3:认识 BIND 中的各种配置文件

安装完 BIND 软件包以后,在系统里会生成一些与 DNS 服务相关的配置文件,例如 BIND 的

主配置文件 named.conf、区域声明文件 named.rfc1912.zones 文件、区域样例文件 named.localhost、

根域配置文件 named.ca 等等。Linux 操作系统中,需要通过修改和创建相应的配置文件,来实现

DNS 服务。

接下来,我们先来了解一下这些配置文件的内容和作用,为后面的创建和修改工作奠定基础。

Page 16: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

(1)浏览 named.conf 文件的内容

该文件存放在 /etc 目录中,使用 vi 命令进行查看

# vi /etc/named.conf

文件内容如下,注意:在一些语句后面用“//”或“ /* */”增加了注释。

//

// named.conf , 主配置文件,此文件可使用 include 包含其他文件

//

// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

// server as a caching only nameserver (as a localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

options { //options 语句中放置 DNS 服务器的全局配置选项及一些默认设置;

listen-on port 53 { 127.0.0.1; };

// 上句用来设置谁可以监听 53 端口(DNS 使用 53 端口)。例如{192.168.31.50;}(表

示仅允许 192.168.31.50 监听 53 端口)、或者{192.168.100.0/24;}(表示仅允许

192.168.100.0/24 网段监听 53 端口)、 或者{any;}(表示允许所有 IP 监听 53 端口)。

}

listen-on-v6 port 53 { ::1; }; //支持 IPv6

directory "/var/named"; //指明区域配置文件存放的目录

dump-file "/var/named/data/cache_dump.db";

statistics-file "/var/named/data/named_stats.txt";

memstatistics-file "/var/named/data/named_mem_stats.txt";

allow-query { localhost; };

// 上句用来设置允许谁进行 DNS 查询。例如 {192.168.31.50;} (表示仅允许

192.168.31.50 进 行 DNS 查 询 ) 、 或 者 {192.168.100.0/24;} ( 表 示 仅 允 许

192.168.100.0/24 网段进行 DNS 查询)、或者{any;}(表示允许所有 IP 进行查询) 。

/*

- If you are building an AUTHORITATIVE DNS server, do NOT enable

recursion.

- If you are building a RECURSIVE (caching) DNS server, you need to

enable

recursion.

- If your recursive DNS server has a public IP address, you MUST enable

access

control to limit queries to your legitimate users. Failing to do so will

cause your server to become part of large scale DNS amplification

attacks. Implementing BCP38 within your network would greatly

reduce such attack surface

*/

// 可以用 forwarders 语句增加转发器功能,例如“forwarders { 211.69.32.10;

139.175.10.20; };” 表示如果本 DNS 服务器无法解析时,将请求交由 211.69.32.10;

139.175.10.20 来解析。使用转发器可绕过从根服务器开始进行检索的正常过程。

Page 17: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

// 可以用 allow-transfer 语句实现区域传送功能。例如“ allow-transfer { none; }; ”

指定允许接受区域传送请求的主机,说明白一点就是辅 dns 定义,比如辅 dns 的 ip 是

192.168.139.5,那么可以这样定义{ 192.168.139.5; },要不然主辅 dns 不能同步,当

然,{}里的也可以用到 acl。

recursion yes; //允许递归查询;

dnssec-enable yes;

dnssec-validation yes;

/* Path to ISC DLV key */

bindkeys-file "/etc/named.iscdlv.key";

managed-keys-directory "/var/named/dynamic";

pid-file "/run/named/named.pid";

session-keyfile "/run/named/session.key";

};

logging { //指定服务器日志记录的内容和日志信息来源

channel default_debug {

file "data/named.run";

severity dynamic;

};

};

/*

channel(通道):日志输出方式,如 syslog、文本文件、标准错误输出或/dev/null,

default_debug:只有当服务器的 debug 级别非 0 时,才产生输出。这里默认保存在

/var/named/data 目录下

file(文件):输出到文本文件

severity(严重性):消息的严重性等级

severity 按照服务器当前的 debug 级别记录日志

*/

zone "." IN {

type hint;

file "named.ca";

};

/*

- 上述语句用来定义一个区域。

- DNS 配置文件中,用 zone 语句来定义区域,一个 zone 语句定义一个区域。

- 可以看出,配置文件 named.conf 里面只有“.”区域,它表示根域;

- type 后面的值表示类型,有三种,分别是 master,slave 和 hint,它们的含义分别是:

◆ master: 表示定义的是主域名服务器的区域

◆ slave : 表示定义的是辅助域名服务器 的区域

◆ hint: 表示是互联网中根域名服务器

- file 表示该区域配置文件的名字,此处的“named.ca”表示根域配置文件的名字。

Page 18: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

注意,根据 options 语句中的 directory 的设置,该配置文件存放在 /var/named 目录中。

*/

include "/etc/named.rfc1912.zones";

/*

- 在 named.conf 文件中,使用 include 语句调用 named.rfc1912.zones 文件;

- named.rfc1912.zones,是区域声明文件(又叫辅助区域配置文件)。此处的调用,

其含义是除了根域外,其他所有的区域配置建议在 named.rfc1912.zones 文件中进行声明,

主要是为了方便管理,不轻易破坏主配置文件 named.conf。

*/

include "/etc/named.root.key";

// /etc/named.root.key 文件用来签名和验证 DNS 资源记录的公共密钥文件

(2)区域声明文件 named.rfc1912.zones文件内容

该文件又被称作辅助区域配置文件。该文件存放在 /etc 目录中,使用 vi 命令进行查看

# vi /etc/named.rfc1912.zones

文件内容如下:

// named.rfc1912.zones:

//

// Provided by Red Hat caching-nameserver package

//

// ISC BIND named zone configuration for zones recommended by

// RFC 1912 section 4.1 : localhost TLDs and address zones

//and

http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt

// (c)2007 R W Franks

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

zone "localhost.localdomain" IN {

type master;

file "named.localhost";

allow-update { none; };

};

zone "localhost" IN {

type master;

file "named.localhost";

allow-update { none; };

};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"

IN {

Page 19: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

type master;

file "named.loopback";

allow-update { none; };

};

zone "1.0.0.127.in-addr.arpa" IN {

type master;

file "named.loopback";

allow-update { none; };

};

zone "0.in-addr.arpa" IN {

type master;

file "named.empty";

allow-update { none; };

};

named.rfc1912.zones 是区域声明文件。其文件内容的主体,是用 zone 语句定义的各个区域,

例如区域“localhost”、“0.in-addr.arpa”等,在定义中主要包括区域名称、区域类型、区域配置文

件名等。

通常除了根域外,其他所有的区域配置都建议在 named.rfc1912.zones 文件中进行声明,并且通

过在主配置文件 named.conf 中调用该文件,实现对各个区域的解析。这样做的目的主要是为了方

便管理,不轻易破坏主配置文件 named.conf。

(3)根域配置文件 named.ca的内容

在主配置文件 named.conf 中,定义了根域“.”,其对应的区域配置文件为 named.ca。当 DNS

服务器无法解析某个域名时,就可以根据 named.ca 文件中的记录信息,向根域名服务器发出查询

请求。

named.ca 文件存放在 /var/named 目录中,使用 vi 命令进行查看

# vi /var/named/named.ca

该文件的内容如下:

; <<>> DiG 9.9.2-P1-RedHat-9.9.2-6.P1.fc18 <<>> +bufsize=1200 +norec

@a.root-servers.net

; (2 servers found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25828

;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 23

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 512

;; QUESTION SECTION:

; . IN NS

Page 20: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

;; ANSWER SECTION:

. 518400 IN NS a.root-servers.net.

. 518400 IN NS b.root-servers.net.

. 518400 IN NS c.root-servers.net.

. 518400 IN NS d.root-servers.net.

. 518400 IN NS e.root-servers.net.

. 518400 IN NS f.root-servers.net.

. 518400 IN NS g.root-servers.net.

. 518400 IN NS h.root-servers.net.

. 518400 IN NS i.root-servers.net.

. 518400 IN NS j.root-servers.net.

. 518400 IN NS k.root-servers.net.

. 518400 IN NS l.root-servers.net.

. 518400 IN NS m.root-servers.net.

;; ADDITIONAL SECTION:

a.root-servers.net. 3600000 IN A 198.41.0.4

a.root-servers.net. 3600000 IN AAAA 2001:503:ba3e::2:30

b.root-servers.net. 3600000 IN A 192.228.79.201

c.root-servers.net. 3600000 IN A 192.33.4.12

d.root-servers.net. 3600000 IN A 199.7.91.13

d.root-servers.net. 3600000 IN AAAA 2001:500:2d::d

e.root-servers.net. 3600000 IN A 192.203.230.10

f.root-servers.net. 3600000 IN A 192.5.5.241

f.root-servers.net. 3600000 IN AAAA 2001:500:2f::f

g.root-servers.net. 3600000 IN A 192.112.36.4

h.root-servers.net. 3600000 IN A 128.63.2.53

h.root-servers.net. 3600000 IN AAAA 2001:500:1::803f:235

i.root-servers.net. 3600000 IN A 192.36.148.17

i.root-servers.net. 3600000 IN AAAA 2001:7fe::53

j.root-servers.net. 3600000 IN A 192.58.128.30

j.root-servers.net. 3600000 IN AAAA 2001:503:c27::2:30

k.root-servers.net. 3600000 IN A 193.0.14.129

k.root-servers.net. 3600000 IN AAAA 2001:7fd::1

l.root-servers.net. 3600000 IN A 199.7.83.42

l.root-servers.net. 3600000 IN AAAA 2001:500:3::42

m.root-servers.net. 3600000 IN A 202.12.27.33

m.root-servers.net. 3600000 IN AAAA 2001:dc3::35

;; Query time: 78 msec

;; SERVER: 198.41.0.4#53(198.41.0.4)

;; WHEN: Mon Jan 28 15:33:31 2013

;; MSG SIZE rcvd: 699

Page 21: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

(4)区域配置样例文件 named.localhost的内容

在 named.rfc1912.zones 文件中定义完区域以后(也可以在 named.conf 中直接定义区域),必须

创建相应区域的区域配置文件,这样,当 DNS 服务器接到域名解析请求时,会先在配置文件(例

如 named.rfc1912.zones)中查找是否定义了相应的区域,若有,则再从对应的区域文件中查找具体

的记录(例如 A 记录等)。

由于区域配置文件具有一些默认的内容和固定的格式,因此 BIND 给出了区域配置文件的样例

文件,即 named.localhost。用户可以参照该文件的内容格式创建新的区域配置文件,或将该文件复

制后直接进行修改,从而提高创建效率。

named.localhost 文件存放在/var/named 目录中。使用 vi 命令进行查看

# vi /var/named/named.localhost

该文件的内容如下:

$TTL 1D //设置有效地址解析记录的默认缓存时间;

@ IN SOA @ rname.invalid. (

0 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

NS @

A 127.0.0.1

AAAA ::1

步骤 4:修改 DNS 主配置文件 named.conf

本步骤对主配置文件 named.conf 中的一些参数进行修改,使其能够满足本实验的需求。

(1)备份 named.conf 文件

由于后续的其他任务中,也需要对 named.conf 进行修改,同时,考虑到实验中有可能修改错

误。因此,本步骤中在对 named.conf 文件进行修改之前,先进行备份。

使用 cp 命令将 named.conf 文件复制一份,命名为 named.conf.backup,仍放置在/etc 目录中。

命令如下:

# cp -p /etc/named.conf /etc/named.conf.backup // -p 参数保持复制文件的权限

和属组不变

(2)修改 named.conf

使用 vi 命令编辑修改 named.conf 文件,修改两个地方:

① 将语句“listen-on port 53 { 127.0 .0.1; };”更改为“listen-on port 53 {any;};”, 意思是允许

任何 IP 地址监听 53 端口。

② 将语句“allow-query { localhost; };” 更改为“allow-query { any; };”,意思是运行所有 IP

查询 DNS 服务。

具体修改内容如下:

options {

listen-on port 53 { any; }; //改为 any,表示允许任何 IP 监听 53 端口;

listen-on-v6 port 53 { ::1; };

directory "/var/named";

dump-file "/var/named/data/cache_dump.db";

Page 22: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

statistics-file "/var/named/data/named_stats.txt";

memstatistics-file "/var/named/data/named_mem_stats.txt";

allow-query { any; }; //改为 any,表示允许任何 IP 查询 DNS 服务;

…… // options 语句中的其它内容省略

};

注意:

如果我们所建立的 DNS 服务器只作为缓存名称服务器,则此时(即 BIND 程序安装完

成,且主配置文件 named.conf已经修改)已经达到需求。如果没有专门负责解析的区域,

直接即可启动服务。启动服务的命令: #systemctl start named.service

步骤 5:修改区域声明文件 named.rfc1912.zones

本步骤对区域声明文件 named.rfc1912.zones 进行修改,在其中添加对区域的定义。

(1)备份 named.rfc1912.zones 文件

考虑到实验中有可能修改错误。因此,本步骤中在对 named.conf 文件进行修改之前,先进行

备份。

使用 cp 命令将 named.rfc1912.zones 文件复制一份,命名为 named.rfc1912.zones..backup,仍放

置在/etc 目录中。注意,复制时加上 -p 参数,保持所复制文件的属组权限不变。

命令如下:

# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.backup

(2)修改 named.rfc1912.zones 文件

使用 vi 命令编辑修改 named.rfc1912.zones 文件。根据任务 1 中的规划,本步骤中要定义的正

向区域为“xuchenggang.net”,将其对应的区域配置文件命名为“xuchenggang.net.zone”;要定义的

反向区域为“31.168.192.in-addr.arpa”,将其对应的区域配置文件命名为“192.168.31.zone”。

命令如下:

# vi /etc/named.rfc1912.zones

在文件 named.rfc1912.zones 的末尾添加如下内容:

zone "xuchenggang.net" IN {

// 定义一个区域名称为“xuchenggang.net”的正向查找区域;

type master;

// 区域类型为主要区域

file "xuchenggang.net.zone";

// 将该区域的区域配置文件命名为“ xuchenggang.net.zone”。注意,此处为相对路径,

即表示该文件将被放置在 /var/named 下,也可写成绝对路径;

allow-update { none; };

};

zone "31.168.192.in-addr.arpa" IN {

// 定义一个区域名称为“31.168.192.in-addr.arpa”的反向查找区域;

type master;

// 区域类型为主要区域

file "192.168.31.zone";

Page 23: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

// 将该区域的区域配置文件命名为“192.168.31.zone”。注意,该文件将被放置在

/var/named 目录中。

allow-update { none; };

};

步骤 6:创建区域配置文件

注意,在上一步骤中,我们只是在 named.rfc1912.zones 文件中定义(即声明)了两个区域,并

且定义了这两个区域的配置文件名。但是,相应的区域配置文件并没有创建。

接下来要创建区域配置文件 xuchenggang.net.zone 和 192.168.31.zone,并在文件中添加“域名

—IP 地址”的有关记录。

注意:

1. 这两个文件要创建在 /var/named目录中。

2. 可以先将/var/named 目录的区域配置样例文件 named.localhost 复制一份,并命名

为 xuchenggang.net.zone,然后在此基础上进行修改。当然,也可以直接使用 vi命

令直接创建并编辑 xuchenggang.net.zone文件。创建其他区域配置文件类同。

(1)创建正向区域配置文件 xuchenggang.net.zone

所用命令

# vi /var/named/xuchenggang.net.zone

该区域配置文件的具体内容如下:

$TTL 1D

@ IN SOA dns.xuchenggang.net. root.xuchenggang.net. (

0 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

@ IN NS dns.xuchenggang.net.

dns IN A 192.168.31.100

ftp IN A 192.168.31.200

www IN A 192.168.31.201

mail IN A 192.168.31.202

web IN CNAME www.xuchenggang.net.

@ IN MX 10 mail.xuchenggang.net.

说明:

1. @ 代表相应的域名,例如此处代表 xuchenggang.net, 表示一个区域记录定义的开始。

2. IN表示后面的数据使用的是 INTERNET标准。

3. SOA 表示授权开始,其后面跟本 DNS 服务器的主机名称( FQDN),此处为

“dns.xuchenggang.net.”。 注意,最后面的“.”不能丢,因为此处的“.”表示一

Page 24: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

个完整主机名称的结束,如果不加点,则系统会默认在原主机名称后再加上

“xuchenggang.net”,即变成了“dns.xuchenggang.net.xuchenggang.net”。

4. root.xuchenggang.net.表示管理员邮件地址。注意,这里的邮件地址中用.来代替常

见的邮件地址中的@,因为@ 用来表示本区域。

注意:

1. IN不能打头,前面应该有域名,或@,或至少应该有一个空格;

2. zone文件必须有 NS条目;

3. IN语句的主机名前面不能留空格,例如上述文件的记录中,ftp前面不能有空格。

(2)创建反向区域配置文件 192.168.31.zone

所用命令

# vi /var/named/192.168.31.zone

该区域配置文件的具体内容如下:

$TTL 1D

@ IN SOA dns.xuchenggang.net. root.xuchenggang.net. (

0 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

@ IN NS dns.xuchenggang.net.

100 IN PTR dns.xuchenggang.net.

200 IN PTR ftp.xuchenggang.net.

201 IN PTR www.xuchenggang.net.

202 IN PTR mail.xuchenggang.net.

步骤 7:查看、修改配置文件的权限

注意:这一步非常重要!如果配置文件的权限设置的不正确,会造成配置文件无法生效!

(1)认识 named 用户和 named用户组

BIND 安装完成后,会自动创建一个名为 named 的用户,其用户目录为 /var/named。还会创建

一个名为 named 的用户组。

查看用户信息

Linux 系统中,用户的基本信息被存储在/etc/passwd 文件中。这个文件的每一行代表一个用户,

使用 cat、vi 命令等都可以看到该文件的内容,例如:cat /etc/passwd 命令,其结果如图 9-23 所示。

Page 25: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

图 9-23 显示所有的用户信息

可以看到,在文件的末尾,有 named 用户的信息。

说明:

/etc/passwd的文件内容格式,每一行由 7个字段组成,字段间使用冒号分隔,各字段含

义如下:

注册名,即登录名

口令占位符

用户标识号(UID)

默认组标识号(GID)

用户名

用户主目录

命令解释程序

以 root 用户为例。root 是用户注册名,X 表示密码保存在/etc/shadow,用户 ID 为

0,所在用户组 ID为 0,用户名是 root,home目录为/root,解释程序/bin/bash。

注意:

在 passwd 的口令字段中,只有一个 X 摆放在那。难道用户的口令就是 X 吗?这显然

不是,由于 passwd文件需要对所有用户可读,因此另找一个地方存放口令显得很有必要。

如今绝大多数系统都将口令经过加密后存放在 /etc/shadow 文件中(这个文件只对 root

可读),然后在 passwd文件的口令字段放入一个 X作为占位符。

UID 号用于唯一标识系统中的用户。这是一个 32 位无符号整数。Linux 规定 root 用

户的 UID 为 0.而其他一些虚拟用户如 bin、daemon 等为分配到一些比较小的 UID 号,这

些用户通常被安排在 passwd文件的开头部分。从一个比较大的数开始分配真实用户的 UID

号是一个好习惯,这样能为虚拟用户提供足够的余地。应该保证每个用户 UID号的唯一性。

GID号用于在用户登录时指定其默认所在的组。和 UID号一样,这是一个 32位整数。

用户组在/etc/group文件中定义,其中 root组的 GID号为 0。

查看组信息

/etc/group 文件中保存着系统中所有组的名称,以及每个组中的成员列表。文件中的每一行表

示一个组,由 4 个冒号分隔的字段组成。

使用 cat、vi 命令等都可以看到该文件的内容,例如:cat /etc/group 命令,其结果见图 9-24。

Page 26: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

图 9-24 显示所有组的信息

可以看到,在文件的末尾,有 named 组的信息。

说明:

/etc/group文件中,一条典型的记录如下:

admin:x:115:user1,user2

以下是这 4个字段的含义:

组名;

组口令占位符;

组 ID(GID)号;

成员列表,用逗号分开(不能加空格)。如果本字段为空表示用户组为 GID的用户名;

以 root 用户组为例,即组名是 root,密码保存位置为/etc/shadow,root 组的 GID

为 0,组下面的用户是 root用户(如果本字段为空表示用户组为 GID的用户名)。

和 passwd文件一样,如果口令字段为一个 x的话,就表示还有一个/etc/gshadow文

件用于存放组口令。但一般来说,组口令很少会用到,因此不必太在意这个字段。

GID 用于标识一个组。和 UID 一样,应该保证 GID 的唯一性。如果一个用户属于

/etc/passwd中所指定的某个组,但没有出现在/etc/group文件相应的组中,那么应该以

/etc/passwd 文件中的设置为准。例如图 9-24 中,最后一行的 named 组,其组用户默认

为 named,因为在/etc/passwd文件中,可以看出 named用户所在组的 ID为 25(见图 9-23),

与 named组的 ID相同。

(2)了解 named进程(服务)的工作方式

named 用户通过 named 进程去读取 DNS 配置文件中的记录,从而实现 DNS 解析。为了实现这

一点,以下三个条件必须至少有一个成立,否则 named 用户将无法读取配置文件,从而造成解析

失败。

① named 用户有读取各种配置文件的权限;

② named 用户组有读取各种配置文件的权限;

③ 任何用户都有读取各种配置文件的权限;

使用 ps 命令,可以查看系统中有哪些进程正在运行和运行的状态(例如占用 cpu 和内存的情

况等)。图 9-25 中,使用 ps 命令查看系统中正在运行的进程中,属主是 named 的进程信息。

Page 27: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

图 9-25 使用 ps 命令显示 named 进程信息

从图 9-25 中可以看出,named 用户调用 named 进程进行工作。

ps 命令使用说明

要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要

查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使

用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有

没有僵死、哪些进程占用了过多 的资源等等。总之大部分信息都是可以通过

执行该命令得到的。

##################################################################

名称:ps

使用权限:所有使用者

使用方式:ps [options] [--help]

说明:显示瞬间进程(process)的动态

参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

-A 列出所有的进程

-w 显示加宽可以显示较多的资讯

-au 显示较详细的资讯

-aux 显示所有包含其他使用者的进程

##################################################################

常用参数:

-A 显示所有进程(等价于-e)(utility)

-a 显示一个终端的所有进程,除了会话引线

-N 忽略选择。

-d 显示所有进程,但省略所有的会话引线(utility)

-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。

(utility)

-p pid 进程使用 cpu的时间

-u uid or username 选择有效的用户 id或者是用户名

-g gid or groupname 显示组的所有进程。

U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U

zhang;(utility)

-f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.

-l 长格式(有 F,wchan,C 等字段)

-j 作业格式

-o 用户自定义格式。

v 以虚拟存储器格式显示

Page 28: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

s 以信号格式显示

-m 显示所有的线程

-H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)

e 命令之后显示环境(如:ps -d e; ps -a e)(utility)

h 不显示第一行

##################################################################

最常用的方法是 ps -aux,然后再利用一个管道符号导向到 grep 去查找特定的

进程,然后再对特定的进程进行操作。

#################################################################

举例:

例 1:运行 ps -aux 的到如图 9-26的信息:

图 9-26 使用 ps 命令显示当前进程的信息

各字段含义:

USER:进程的属主;

PID:进程的 ID;

PPID:父进程的 ID;

%CPU:进程的 cpu 占用率

%MEM:进程的内存占用率

VSZ:进程所使用的虚存的大小(Virtual Size)

RSS:进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。

TTY:与进程关联的终端(tty)

STAT:进程的状态:进程状态是用字符表示的(STAT的状态码)

D 无法中断的休眠状态(通常 IO 的进程);

R: 正在执行中

S: 静止状态

T: 暂停执行

Z: 不存在但暂时无法消除(僵尸进程)

< 优先级高的进程

N 优先级较低的进程

L 有些页被锁进内存;

s 进程的领导者(在它之下有子进程);

l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);

+ 位于后台的进程组;

WCHAN:正在等待的进程资源;

START:启动进程的时间;

TIME:进程消耗 CPU的时间;

Page 29: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

COMMAND:正在执行的命令行命令

############################################################

例 2:

查看当前系统进程的 uid,pid,stat,pri, 以 uid 号排序.

ps -eo pid,stat,pri,uid –sort uid

查看当前系统进程的 user,pid,stat,rss,args, 以 rss排序.

ps -eo user,pid,stat,rss,args –sort rss

############################################################

例 3:

[root@localhost ~]# ps -aux |more

可以用 | 管道和 more 连接起来分页查看。

[root@localhost ~]# ps -aux > ps001.txt

把结果输出到 ps001.txt 文本中并保存。

[root@localhost ~]# more ps001.txt

这里是把所有进程显示出来,并输出到 ps001.txt 文件,然后再通过 more 来

分页查看。

ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连

续的;如果想对进程时间监控,应该用 top 工具。

(3)查看主配置文件和区域声明文件(即辅助配置文件)的权限

接下来我们查看一下/etc 目录中主配置文件(named.conf)和区域声明文件(即辅助配置文件

named.rfc1912.zones)的权限。

所用命令

# ls /etc/named* -l // 显示/etc 目录中以“named”开头的文件,并显示其权限

结果如图 9-27 所示。

图 9-27 显示/etc 目录中配置文件的权限

由于我们是直接在原有的/etc/named.conf 和/etc/named.rfc1912.zones 文件中进行修改的,并没

有改变这两个文件原有的权限。可以看出,这两个文件的属主是 root,属主拥有“rw”权限。这两

个文件的属组是 named 用户组,属组用户拥有“r”权限。即 named 用户组中的 named 用户可以读

取这两个文件。因此,此处可以不修改这两个文件的权限。

(4)查看 /var/named 目录中的区域配置文件权限

所用命令

# ls -l /var/named // 显示/var/named 目录中的文件,并显示其权限

结果如图 9-28 所示。

Page 30: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

图 9-28 显示/var/named 目录中的文件及其权限

可以看出:

① 文件 named.ca 属于 BIND 自动创建的配置文件,其属组是 named,并且属组用户对该文件

有“读”权限;

② xuchenggang.net.zone 文件和 192.168.31.zone 文件是 root 用户新建的,他们的属主和属组都

是 root,其他用户对此文件没有任何权限,也就是说,named 用户对这两个文件没有“读”权限;

综合上述分析,我们必须对 xuchenggang.net.zone文件和 192.168.31.zone文件的权限进行修改,

否则,named 进程将无法读取他们。

(5)修改/var/named目录中区域配置文件的权限

此处对 xuchenggang.net.zone 文件和 192.168.31.zone 文件的权限进行修改。可以用以下两种方

法进行修改。

方法 1:将区域配置文件的属组改为 named

即将 xuchenggang.net.zone 文件和 192.168.31.zone 文件的属组改为 named 用户组,并保持属组

用户对本文件的“读”权限,从而使得 named 用户(该用户属于 named 用户组)能够读取这两个

区域配置文件。

所用命令

# chown :named /var/named/xuchenggang.net.zone

# chown :named /var/named/192.168.31.100.zone

修改结果见图 9-29:

图 9-29 将区域配置文件的属组改为 named

方法 2:增加其他用户对区域配置文件的“读”权限

即将 xuchenggang.net.zone 文件和 192.168.31.zone 文件的权限改为 644(即-rw-r--r--),从而使

Page 31: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

得其他用户(例如 named 用户)对此文件具有“读”权限。

所用命令

# chmod o=r /var/named/xuchenggang.net.zone

# chmod o=r /var/named/192.168.31.100.zone

修改结果见图 9-30:

图 9-30 增加其他用户对区域配置文件的“读”权限

注意:也可直接将区域配置文件的权限改为“777”。

步骤 8:检查文件格式并启动 named 服务

(1)检查文件格式

注意:由于配置 BIND 时,很可能会因为人为原因出错,可用以下命令检查配置文件和区域配

置文件是否存在语法错误。

检查 Bind 配置文件格式命令如下所示。

# named-checkconf /etc/named.conf

检查区域配置文件格式命令如下所示。

# named-checkzone xuchenggang.net /var/named/xuchenggang.net.zone

# named-checkzone 31.168.192.in-addr.arpa /var/named/192.168.31.zone

(2)启动 named服务进程,并设置开机启动该进程

# systemctl start named

# systemctl enable named

注意:由于本实验是在虚拟化环境中进行的,因此有可能单纯的启动 named服务进程并不

起作用,需要重启一下 DNS服务器,即重启一下虚拟机。

任务 4:DNS 服务测试

任务描述:

分别在虚拟机 Host-1和 Host-2中测试 DNS 服务器的工作情况。

虚拟机 Host-1 和 Host-2 安装的是 Ubuntu Desktop 15.10 操作系统,并且在本实验任务 2 的步骤

2 中,已经设置好它们的 IP 地址(分别为 192.168.31.50 和 192.168.31.51),DNS 服务器的 IP 地址

都设置为 192.168.31.100(即虚拟机 DNS Server 的 IP)。

Page 32: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

步骤 1:打开 Ubuntu 终端控制台

由于本任务分别使用 nslookup 和 dig 命令测试 DNS 服务器的工作情况。为此需要首先进入

Ubuntu 的终端控制台界面。右击 Ubuntu 系统桌面空白处,选择【打开终端】,即可打开命令控制

台,见图 9-31。

图 9-31 打开 Ubuntu 的终端控制台界面

步骤 2:使用 nslookup 命令进行测试

(1)测试域名 www.hactcm.edu.cn的解析结果,见图 9-32。

图 9-32 nslookup 命令测试域名 www.hactcm.edu.cn 的解析结果

(2)测试域名 www.xuchenggang.net 的解析结果,见图 9-33。

图 9-33 nslookup 命令测试域名 www.xuchenggang.net 的解析结果

(3)测试反向记录 192.168.31.200 的解析结果,见图 9-34。

图 9-34 nslookup 命令测试反向记录 192.168.31.200 的解析结果

Page 33: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

(4)测试 MX 记录的解析结果,见图 9-35。

图 9-35 nslookup 命令测试 MX 记录的解析结果

(5)其他测试

读者可根据配置文件的内容,测试其他域名的解析情况,并填写表 9-1。

表 9-1 使用 nslookup 进行 DNS 测试

序号 命令 返回结果

1 nslookup ftp.xuchenggang.net

2 nslookup mail.xuchenggang.net

3 nslookup w.xuchenggang.net

4 nslookup –querytype=a

www.xuchenggang.net

5 nslookup –querytype=mx xuchenggang.net

6 nslookup –querytype=cname

web.xuchenggang.net

7 nslookup –querytype=ptr 192.168.31.201

8 nslookuo –querytype=ns xuchenggang.net

10 nslookup –querytype=soa xuchenggang.net

11 nslookup www.xuchenggang.net

114.114.114.114

12 nslookup www.xuchenggang.net 8.8.8.8

Page 34: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

步骤 3:使用 dig 命令进行测试

(1)测试域名 www.hactcm.edu.cn的解析结果,见图 9-36。

图 9-36 dig 命令测试域名 www.hactcm.edu.cn 的解析结果、

可以看出,使用 dig 命令可以得到更加详细的结果。

Page 35: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

(2)测试域名 www.xuchenggang.net 的解析结果,见图 9-37。

图 9-37 dig 命令测试域名 www.xuchenggang.net 的解析结果

(3)其他测试

读者可根据配置文件的内容,测试其他域名的解析情况。

九、实验分析

1、为什么有时候解析的结果中显示非权威应答。

2、对比分析 nslookup 和 dig 的应用

3、总结配置过程中出现的错误

十、实验扩展资源

1、图书

(1)Cricket Liu. DNS 与 BIND 北京:人民邮电出版社,2014

(2)王达. 深入理解计算机网络. 北京:机械工业出版社,2014

2、文章

(1)任勉. DNS 安全与防护. 北京邮电大学,2007

(2)胡兰兰. 基于 BIND 的 DNS 服务器检测研究. 安徽电子信息职业技术学院学报,2012 05

Page 36: 实验九:基于 Linux 的DNS 实现fileapi.it.hactcm.edu.cn/wangluoyingyong/file/2016/... · (3)在虚拟机上安装CentOS 7 在VirtualBox 中,将CentOS 7 镜像文件装入虚拟机DNS

《计算机网络应用技术与实践》/ 实验九:基于 Linux的 DNS智能解析

3、互联网资源

DNS(域名系统):http://baike.baidu.com/link?url=oj4aWlXYpruWqimoOoyT8zAuGypOXo

hm-mufwHL1thEyW9EfuXI2sLS9vZEXoar-9wq8N57ZLwUoSZtxEynpVPcpnKAv_N14UYD2Pam

2RdK

4、电子资源下载

课程网站:http://ethernet.51xueweb.cn。