《DNS与BIND(第5版)》——4.7 运行一个Primary名称服务器

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

本节书摘来自异步社区《DNS与BIND(第5版)》一书中的第4章,第4.7节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。

4.7 运行一个Primary名称服务器

现在已经创建了区域数据文件,并准备好开始运行几个名称服务器了。需要建立两个名称服务器:primary名称服务器和slave名称服务器。在启动名称服务器之前,请确保syslog守护进程(daemon)已经在运行了。如果名称服务器在读取配置文件和区域数据文件时发现了错误,那么它就会向syslog守护进程发送日志消息。如果错误很严重,则名称服务器就会退出。如果使用BIND 9的named-checkconf和named-checkzone进行了检查,那么应该已经准备就绪了。但为了安全起见,最好再检查下syslog中的错误。

4.7.1 启动名称服务器
在这里,假设正在运行的机器上安装的是BIND名称服务器,并且支持工具nslookup也已安装好。检查一下named的使用手册,以找到名称服务器的可执行程序所存放的目录,并核实它们确实存在于系统内。在BSD系统上,名称服务器的可执行程序一般存放在/etc目录下,但有时也会被移动到/usr/sbin目录。其他可以找到named的地方包括/usr/etc/in.named以及/usr/sbin/in.named。以下描述会假设名称服务器存放在/usr/sbin目录中。

要启动名称服务器,必须成为超级用户(root)。名称服务器会在一个保留的端口上监听查询,所以它需要root权限。第一次应以命令行方式启动名称服务器,以测试它是否运行正常。随后,将介绍如何在系统启动时自动运行名称服务器。

下面的命令将启动名称服务器。在主机toystory.movie.edu上执行以下命令:


<a href=https://yqfile.alicdn.com/5ed1f3706db9574888c8320d9844410ee362f6f9.png" >

该命令会假设配置文件的名称是/etc/named.conf。当然也可以把配置文件放在其他地方,但是必须使用-c命令行选项来告诉名称服务器配置文件在何处:


c841bfb73d1b6daf56af5cea3630e8379e3c71e7

4.7.2 检查Syslog错误
名称服务器启动后,要做的第一件事就是检查syslog文件,看看是否有错误消息。如果对syslog还不熟悉,可以查看syslog.conf的使用手册中对syslog配置文件的介绍,或是查看syslogd的使用手册中对syslog守护进程的介绍。名称服务器会以named为名利用daemon设备将这些消息记录到日志中。因此,只要在/etc/syslog.conf中查找daemon设备,便可知道syslog消息被记录在何处。


e978cb5bcb387da3b624fbdfa063c3b63bbce92d

在这台主机上,名称服务器的syslog消息会被记录到/var/adm/messages文件中,syslog只保存严重级别(severity)为LOG_NOTICE或更高的消息。某些有用的消息是以LOG_INFO的严重级别被发送的;可能也会希望看到这些信息。在阅读完本书第7章对于syslog消息更加详细的介绍后,就能决定是否要改变记录的等级了。

当名称服务器启动时,它会记录一条启动消息:


35355751c981bc3053301be586d0a34fe1c762b4

启动消息并不是一条错误消息,但是与之一起的其他消息可能是错误消息。最常见的错误是出现在区域数据文件或配置文件中的语法错误。例如,如果在地址记录中忘了指定资源记录类型:


15dde8643af60d0508e9870279b7fc9271292db3

那么就会看到如下syslog错误消息:


20b13ab97bafe5bb369d7ef44c49dbe63d48d2bb

或者,如果在/etc/named.conf中把“zone”拼写错了:


d123b994166cb49a0f1858bc3c60b27f2d9097b5

那么就会看到如下syslog错误消息:


2b79fb01d004097d8cf0d70f62e308d4c17742c6

如果BIND发现某个名称未遵循RFC 952规范,那么就会看到如下syslog错误消息:


<a href=https://yqfile.alicdn.com/3cb61395a4ef7879379be2e1c505899f2255f614.png" >

如果出现了一个语法错误,那么可以检查syslog错误消息中提到的行号,看看能否找到问题。既然已经知道区域数据文件的大致模样了,也应该能找出大部分常见的语法错误。否则,就不得不到附录A中去查看所有资源记录的语法细节。如果能够修正该语法错误,那就修正它,然后通过ndc(BIND 8)或rndc(BIND 9)去重载(reload)名称服务器——这里的ndc代表name daemon controller。


<a href=https://yqfile.alicdn.com/c795b6787f6cbb4673ba4e7435f7619d435033d7.png" >

这样,名称服务器就会重新读取区域数据文件1。在本书第7章,将会介绍更多使用ndc和rndc控制名称服务器的内容。

4.7.3 用nslookup来测试设置
如果已经正确地建立了本地区域,并且已经连接到Internet,那么就应该能够查询到本地以及远程的域名。现在将一步一步地介绍如何通过nslookup进行查找。虽然本书专门用了一整章(第12章)来介绍nslookup,但是在这里也将介绍足够的细节以进行基本的名称服务器测试。

1.设置本地域名

在运行nslookup之前,必须先设置主机的本地域名。设置好以后,就能够直接使用carrie进行查询,而不必拼写出完整的carrie.movie.edu;因为系统会自动在末尾添加上域名movie.edu。

设置本地域名有两种方式:hostname(1)或者/etc/resolv.conf。有些人会说,在实际操作中大多数的站点都使用/etc/resolv.conf来设置本地域名。但是使用两种方式中的任何一种都可以。在本书中,假定本地域名来自于hostname(1)。

创建一个称作/etc/resolv.conf的文件,将下面这行放在第一列(用你的本地域名来替换movie.edu):


3cc10f24ec7972afc977741647d08c1f442c6ac8

或者,将hostname(1)设置为一个域名。在主机toystory上,将hostname(1)设置为toystory.movie.edu。请勿在该名称结尾加上“.”。

2.查找一个本地域名

nslookup可以用来查找任何类型的资源记录,也可以用来直接查询任意名称服务器。在默认情况下,nslookup会使用resolv.conf文件中所指定的第一个名称服务器来查询A(地址)记录(如果resolv.conf文件中未指定名称服务器,则解析器将默认查询本地名称服务器)。要用nslookup来查询主机的地址,需要运行nslookup,并用主机的域名作为唯一的参数。查询本地域名应该会立即得到回应。

运行nslookup来查找carrie:


<a href=https://yqfile.alicdn.com/7cf8137a5271071edc51980c06e426aebd3377f7.png" >

如果查找某个本地域名成功,则意味着对于正向解析区域而言,本地名称服务器的配置是正确的。如果查找失败了,那么将会看到如下消息:


<a href=https://yqfile.alicdn.com/3ea24017f99986dbb9d6c23b23090cdb98b74fcf.png" >

这意味着区域数据中没有carrie。这时要检查一下区域数据文件;可能的原因包括没有在hostname(1)中设置本地域名,或是名称服务器出现了错误(当检查syslog消息时,应该会找到这些错误)。

3.查找一个本地地址

当把某个地址提供给nslookup进行查找时,它知道要进行PTR查询而不是地址查询。下面运行nslookup来查找carrie的地址:


<a href=https://yqfile.alicdn.com/83f07efea4ed519c7e69d3b7dbf8d988bd025ebd.png" >

如果查找某个地址成功,则意味着对于in-addr.arpa(逆向解析)区域而言,本地名称服务器的配置是正确的。如果查找失败了,那么将看到和查找域名失败同样的错误消息。

4.查找一个远程域名

下一步就是尝试使用本地名称服务器去查找远程域名了,例如ftp.rs.internic.net或者其他已知的在Internet上的系统。这个命令可能不会像查找本地域名那样迅速得到回应。如果nslookup未能从名称服务器上得到响应,在放弃前,它还将等待超过一分钟的时间:


<a href=https://yqfile.alicdn.com/259ff9cb4f8b4932f7edec03a7f56186e3a78155.png" >

如果查找成功,则意味着名称服务器知道root名称服务器的位置,并且知道如何联系它们以寻找自己区域以外的其他区域的域名信息。如果查找失败,要么是忘了配置root提示文件(syslog中会显示一条消息),要么是网络在某处发生了故障,导致无法访问远程区域的名称服务器。这个时候就换个远程域名试试吧。

如果前面这些查找都成功了,那么祝贺你!已经建立起了一个可运行的primary名称服务器。此时,应该准备好开始配置slave名称服务器了。

5.再进行一项测试

除了上述测试,还可以再进行一项测试。检查父区域的名称服务器是否已经对这个域进行了正确授权。如果父区域规定在有两台运行起来的名称服务器之后,才能对区域进行授权,那么请直接跳到下一节。

这项测试需要两个步骤。首先,需要找到一个父区域名称服务器的IP地址。其次,需要查询父区域的名称服务器以检查自己区域的NS记录(授权信息)。

第一步:找到父区域名称服务器的IP地址。要做到这一点,需要查询自己的名称服务器来找到父区域的NS记录。这里会再次用到nslookup,但需要加上-type=ns选项,以告诉nslookup程序查询的是名称服务器记录。

下面的例子会假设正在建立hp.com区域,并且需要找到com(其父区域)的名称服务器。


<a href=https://yqfile.alicdn.com/7e37ef740a6b934b4413c0b17cfab7e1eb8ef55a.png" >

第二步:需要查询父区域的一个名称服务器,以得到本区域的NS记录。这次同样要为nslookup加上-type=ns选项,并且还要加上-norecurse选项,这样nslookup才不会要求名称服务器以递归的方式来查询数据。另外,还需要直接查询父区域的名称服务器,而不是查询本地名称服务器。(本地名称服务器也拥有本区域的NS记录,但那不是本次测试所要检查的部分。)要查询父区域的名称服务器(而不是自己的),需要在nslookup语句的最后加上父区域名称服务器的名称。下面的例子中,将会查询com的名称服务器b.gtld-servers.net,以获取hp.com的NS记录:


<a href=https://yqfile.alicdn.com/35fa83bee4342e6ae7d1e458ea7b7d9e92c21fa3.png" >

正如预期的那样,hp.com已经正确完成所有的设置工作。

如果名称服务器能成功查找到ftp.rs.internic.net,并且能查找到父域的名称服务器,这表明名称服务器已被正确建立起来,并且可以连接Internet了。如果父区域的名称服务器上没有本区域的NS记录,那么就说明本区域没有在父区域的名称服务器上注册。这不是个大问题,因为在区域内部的系统仍然可以查找区域内部及外部的其他系统的域名。还能够访问到本地及远程系统的Web和FTP服务。但是没有被注册很快将会成为一个问题,因为在区域外部的主机无法查找区域内部的域名;也就是说可能无法给身处远程区域的朋友发送电子邮件,而且肯定得不到任何回应。要解决这个问题,就得与父区域的管理员取得联系,并请他们检查本区域的授权情况。

4.7.4 编辑启动文件
一旦证实了名称服务器运行正常并且现在就可以使用,接下来就需要把它配置成自动启动,并在系统的启动文件中为hostname(1)设置一个域名(或者在/etc/resolv.conf文件中设置域名)。检查一下系统厂商是否已经将名称服务器设置成了自动启动。还可能需要移除启动行中的注释字符,否则启动文件可能会测试/etc/named.conf是否存在。要查找自动启动行,可以使用:


<a href=https://yqfile.alicdn.com/54ec5202735b795c20fbf0b528d3e0bd547dea76.png" >

或者,如果使用的是System V样式的rc文件,则可以使用:


2afe5c0b41633f91a98bcd3e808f4f2a2f060967

如果什么都没有找到,那么可以先用ifconfig命令初始化网络接口,然后将如下语句添加到适当的启动文件中:


<a href=https://yqfile.alicdn.com/20fcc6312e4549465d4b0b016066fffbd7ded650.png" >

或许想等到默认路由配置之后,或者路由守护进程(routed或gated)启动之后,再启动名称服务器,而这取决于这些服务是否需要使用名称服务器,还是使用/etc/hosts就够了。

找到初始化主机名称的启动文件并把hostname(1)改成一个域名。例如,将


<a href=https://yqfile.alicdn.com/5f87a584aa592d1aebed77348fe3b629b172978c.png" >

改为:


<a href=https://yqfile.alicdn.com/76e0ce99b7e619da14d19e9f5068f179b2fa9768.png" >
相关文章
|
4月前
|
监控 网络协议 安全
DNS服务器故障不容小觑,从应急视角谈DNS架构
DNS服务器故障不容小觑,从应急视角谈DNS架构
102 4
|
4月前
|
弹性计算 网络协议 Ubuntu
如何在阿里云国际版Linux云服务器中自定义配置DNS
如何在阿里云国际版Linux云服务器中自定义配置DNS
ly~
|
4月前
|
网络协议 应用服务中间件 Apache
如何在 DNS 记录中设置反向代理服务器?
要设置反向代理服务器,首先需安装配置软件(如 Nginx 或 Apache),并确保域名正确指向服务器 IP。接着,在 DNS 中设置 A 或 CNAME 记录,将域名指向反向代理服务器。然后编辑 Nginx 或 Apache 的配置文件,将请求转发至后端服务器。最后,通过浏览器访问域名测试配置是否成功,并使用工具检查请求流向和响应情况。
ly~
431 3
|
4月前
|
弹性计算 负载均衡 网络协议
内部名称解析设置阿里云私有 DNS 区域,针对于阿里云国际版经验教程
内部名称解析设置阿里云私有 DNS 区域,针对于阿里云国际版经验教程
ly~
|
4月前
|
域名解析 网络协议 Linux
如何测试 DNS 记录中的反向代理服务器是否生效?
本文介绍了三种测试反向代理服务器配置的方法。首先,通过命令行工具如 `ping`、`nslookup` 和 `dig` 检查域名解析是否指向正确的 IP 地址。其次,利用 Web 浏览器访问域名,验证页面加载正常且请求头信息无误。最后,借助网络抓包工具如 `Wireshark` 和 `tcpdump` 分析数据包,确保请求正确转发并返回预期响应。
ly~
364 2
|
3月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
140 2
|
4月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
101 1
|
2月前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是"将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为5种:单例模式、工厂方法模式抽象工厂式、原型模式、建造者模式。
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
2月前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
2月前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

相关产品

  • 云解析DNS
  • 推荐镜像

    更多