Linux主辅DNS数据不同步故障排除
Linux主辅dns数据不同步故障排除
欢迎使用微信关注“云运维联盟”公众号,第一时间了解本博客动态!
在互联网中,我们知道任何一台提供应用服务的主机(例如:HTTP、FTP等)都有它一个便于记忆Domain Name,这些名称给用户带来了许多便利。但是,有些时候这些服务却对我们这些维护人员显得有些不“厚道”。本文将介绍DNS主辅配置过程中常遇到的配置问题以及排除方法。
我们有必要了解一下主辅DNS区域复制原理:如下图3所示主辅DNS服务器数据同步的过程,首先master DNS服务器每次修改完成并重启服务后,将传送notify给所有的slave DNS服务器。slave DNS服务器将查询master服务器的SOA记录,master DNS服务器收到请求后将SOA记录发送给Slave DNS服务器,Slave DNS服务器收到后同时对比查询结果中的serial值,如果serial值不大于本机的话将结束数据同步过程;但是如果serial值大于本机的话,slave DNS将发送zone transfer请求要求(AXFR/IXFR)。Master响应zone transfer请求并传送结果,直到整个slave更新完成。
整体的同步过程如上所述,但是如何将这些原理体现在相关的配置文件中,这里以创建域名[url]www.qiuri.com[/url]记录为例:
测试平台:RedHat Enterprise Linux 5 Server update 2
所需软件包列表:
软件包名称 | 作用 |
bind-libs | 包含DNS的库文件 |
Bind-9 | DNS服务器软件,安装此软件前需要安装libs |
caching-nameserver | 配置文件模板 |
bind-utils | DNS查询工具软件 |
bind-chroot | 使DNS在chroot模式下运行,增强安全性(选择性安装) |
根据你使用的安装包安装相应的软件,这里我使用系统自带的rpm包,配置yum本地更新源后,使用命令yum install bind*进行安装。使用yum安装的好处是能够自动处理安装过程中包的连带性,但是有时候也安装了一些不必要的程序到你的系统。
安装完成后第一件需要注意的事情是“查看你是否安装了bind-chroot这个包”这个程序的主要功能是:将DNS服务器在chroot模式下运行,在这种模式下运行的话,它会将所有和DNS相关的文件都锁定到/var/named/chroot目录下,就是说bind的访问范围仅仅定位于这个目录中,无法进一步提升到系统中的其它目录。这样可以提高系统的安全性。这样听起来很美,但是配置起来会出现许多的问题,建议不要使用。如果你使用了的话,所有配置修改需要到/var/named/chroot下,例如配置文件在/var/named/chroot/etc/named.conf。
[root@master ~]#rpm –q bind-chroot
由于RedHat AS 5安装后默认的配置文件名称named.caching-nameserver.conf和/etc/named. caching .zones组成。修改配置文件名称:
[root@master ~]#mv /etc/named.caching-nameserver.conf /etc/named.conf
[root@master ~]#mv /etc/named. caching .zones /etc/named. zones
修改主DNS服务器上的配置文件,修改结果如下:
[root@master~ ]# vi /etc/named.conf
//
// named.caching-nameserver.conf
省略若干注释
options {
listen-on port 53 { 10.1.1.1; };
listen-on-v6 port 53 { ::1; };
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";
query-source port 53;
query-source-v6 port 53;
allow-query { any; };
};
include "/etc/named.zones";
[root@master ~]#
修改/etc/named.zones文件,添加相关字段创建正向区域,添加内容如下:
[root@master~]# vi /etc/named.zones
// named.rfc1912.zones:
省略若干注释和若干默认区域
zone "qiuri.com" IN {
type master;
file "qiuri.com";
allow-transfer { 10.1.1.2; };
allow-update { none; };
};
[root@master~]#
在/var/named创建相关区域文件qiuri.com内容如下所示:
[root@master~ ]# cat /var/named/qiuri.com
$TTL 86400
@ IN SOA master.qiuri.com. root.master.qiuri.com. (
2008111305 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS master.qiuri.com.
IN NS slaves.qiuri.com.
www IN A 10.1.1.1
ftp IN A 3 10.1.1.1
[root@master~ ]#
由于是测试我这里就不建立许多的区域了,在辅助DNS上的配置几乎一样,只需要将named.conf配置文件中的listen-on port 53 中的IP地址字段修改为辅助DNS服务器即可。
[root@ slave~ ]# vi /etc/named.conf
//
// named.caching-nameserver.conf
省略若干注释
options {
listen-on port 53 { 10.1.1.2; };
省略其它和主DNS服务器相同字段
include "/etc/named.zones";
[root@ slave~ ]#
在/etc/named.zones配置文件中将区域类型修改为slave,并指定主DNS服务器IP即可:
[root@ slave~]# vi /etc/named.zones
// named.rfc1912.zones:
省略若干字段。。。。。。
zone "qiuri.com" IN {
type slave;
file "slaves/qiuri.com";
masters { 10.1.1.1; };
allow-update { none; };
};
[root@ slave~]#
注意:修改每台DNS服务器自己为DNS服务器,相关配置文件为/etc/resolv.conf。
将所有配置完成后我们分别在主辅DNS上执行命令service named start启动服务。
故障一:
DNS上使用ping命令测试,发现了第一个故障:启动服务过程中没有任何的错误提示,ping域名的时候却显示没有这个域名。
故障分析:通过ping域名的时候,我们得知没有这个域名的回应值,这表明这个区域没有生效,但是到底是什么原因导致区域没有生效呢?这个时候不要茫然,去看看日志吧!
[root@master~]# tail /var/log/messages
省略若干… …
Nov 21 20:55:57 localhost named[7113]: zone qiuri.com/IN: loading master file qiuri.com: permission denied
Nov 21 20:55:57 localhost named[7113]: zone localdomain/IN: loaded serial 42
Nov 21 20:55:57 localhost named[7113]: zone localhost/IN: loaded serial 42
Nov 21 20:55:57 localhost named[7113]: running
[root@master~]#
黎明前的黑暗终于度过,一行行的日志终于看完,发现在加载qiuri.com的时候出现了permission denied的提示,就是说加载文件时被拒绝了。为什么会拒绝呢?我们先查看一下这个文件的属性吧?
[root@master~]# ll /var/named/qiuri.com
-rw-r----- 1 root root 436 11-21 20:54 /var/named/qiuri.com
[root@master~]#
发现这个文件的所有者是root,属组也是root,但是由于DNS服务使用named这个用户启动服务,难怪会拒绝了呢。那修改一下吧!
[root@master~]#chown named.named /var/named/qiuri.com
修改完成后重启dns服务,使配置生效。
[root@master~]#service named restart
再次查看日志,发现已经成功加载。
[root@master~]# tail -5 /var/log/messages
省略若干... ...
Nov 21 21:11:46 localhost named[7217]: zone qiuri.com/IN: loaded serial 2008111305
Nov 21 21:11:46 localhost named[7217]: zone localdomain/IN: loaded serial 42
Nov 21 21:11:46 localhost named[7217]: zone localhost/IN: loaded serial 42
Nov 21 21:11:46 localhost named[7217]: running
[root@master~]#
总结:这个问题出现的原因是由于我们创建这个文件的时候,没有考虑文件权限,导致出现这个问题。如果有的朋友不是手工编辑的这个文件,而是直接复制/var/named/named.local这个文件后再修改的,建议复制过程中使用-p参数。这样就避免了cp后再修改权限的步骤。
接着迫不及待的去启动了辅助DNS的服务,之后去查看/var/named/slaves中是否存在qiuri.com这个区域文件。发现成功复制过来。
[root@ slave ]# ls /var/named/slaves/
qiuri.com
[root@ slave ]#
到这个时候我们的测试还没有结束,继续进行中,首先我们再次回到主DNS服务器上编辑qiuri.com区域文件,增加主机记录,修改serial值。
[root@master ]# cat /var/named/qiuri.com
$TTL 86400
@ IN SOA master.qiuri.com. root.master.qiuri.com. (
2008111306 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS master.qiuri.com.
IN NS slaves.qiuri.com.
www IN A 10.1.1.1
ftp IN A 10.1.1.1
down IN A 10.1.1.1
[root@master~]#
修改完成后,使用service named reload重新加载配置文件,到辅助dns上验证我们添加的记录是否同步过来。但是再次失望了,故障又发生了。
故障二:
主DNS服务器修改记录或添加区域辅助DNS同步不过去,或者需要很长时间。这样如果在现实生活中,会造成各地访问的结果不同。我们有必要研究一下主DNS服务器上修改完成后如何快速的同步给其它辅助的DNS。
故障分析:
为了查清故障的原因,这个时候我分别在各个DNS服务器上开启两个终端,在第一个终端输入命令tail -f /var/log/messages动态监控日志;另一个终端中重启DNS服务。发现没有产生任何日志。这个时候,思考了一下主辅DNS的工作原理,每次主DNS修改完成后重启服务会传送notify值,但是这里却没有传送。再次回到配置文件中检查相关字段发现没有定义。这个字段可以在named.conf中options字段中声明。也可以在单个区域文件中声明。
这里在qiuri.com的zone中添加also-notify { 10.1.1.2; };值。
[root@master~]#
zone "qiuri.com" IN {
type master;
file "qiuri.com";
also-notify { 10.1.1.2; };
allow-transfer { 10.1.1.2; };
allow-update { none; };
};
[root@master~]#
注意:如果要在options中声明,可以使用notify yes;即可。
再次加载服务,发现监控的日志开始有相应的请求和发送的字段出现。主DNS服务器的日志如下:
[root@master ~]#tail -f /var/log/messages
Nov 13 16:17:38 master named[3159]: zone qiuri.com/IN: sending notifies (serial 2008111306)
Nov 13 16:18:57 master named[3159]: client 10.1.1.2#45757: transfer of 'qiuri.com/IN': AXFR-style IXFR started
Nov 13 16:18:57 master named[3159]: client 10.1.1.2#45757: transfer of 'qiuri.com/IN': AXFR-style IXFR ended
[root@master ~]#
辅助DNS服务器上日志显示如下:
[root@ slave~ ]#tail -f /var/log/messages
Nov 14 08:12:55 ns named[6014]: running
Nov 14 08:12:55 ns named[6014]: zone qiuri.com/IN: sending notifies (serial 2008111306)
Nov 14 08:15:10 ns named[6014]: client 10.1.1.1#1106: received notify for zone 'qiuri.com'
Nov 14 08:15:10 ns named[6014]: zone qiuri.com/IN: Transfer started.
[root@ slave~ ]#
这个时候问题解决,其实还有配置主辅DNS服务器的时候还会见到类似failed while receiving responses: REFUSED错误提示,一般是由于主DNS服务器上未授权或者是相关的目录没有权限造成。只要耐心查看日志和思考问题,相信问题均可解决。
相关原理:
在解决问题的过程中有的朋友说将SOA中的Refresh值修改小一点,没错!但是这个值什么时候生效呢?当我们主DNS服务器上修改完成后重启服务,会主动传送notify值,如果辅助DNS服务器没有收到才参考Refresh,Refresh 不成功,则参考Retry ,Retry 一直不成功, 则参考 Expire,如果Expire也不成功,则选择放弃zone transfer的过程。
欢迎使用微信关注“云运维联盟”公众号,第一时间了解本博客动态!
转载于:https://blog.51cto.com/baidu/114245
相关文章:

c语言贝叶斯分类,基于朴素贝叶斯分类器的文本分类算法(C语言)
基于朴素贝叶斯分类器的文本分类算法(C语言)基于朴素贝叶斯分类器的文本分类算法(C语言).txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了。他只是比对方更珍惜这份感情。#include #include #include //_getcwd(), _chdir()#include…

开源项目哪家强?Github年终各大排行榜超级盘点(内附开源项目学习资源)
整理 | Jane出品 | AI科技大本营【导语】提到开源项目,2018 年注定是不平凡的一年。据 Octoverse 报告数据,仅在 2018 年,Github 上的新用户就比过去六年的用户总数还要多 ,存储库数量近一亿,这些增长都要归功于开源社…

给现有MVC项目增加Web API支持
在MVC4中自带了Web API不再需要从Nuget中下载。 Step1:增加System.Web.Http,System.Web.Http.WebHost,System.Net.Http三个程序集的引用,都是4.0版本; Step2:增加路由,默认的路由代码如下 route…

word自动消除html标签,清理Word生成HTML的冗余;清理与清除HTML标签
众所周知,当直接将word中的内容复制到网页上时,会产生很多冗余代码;而现在,在线编辑器又很普遍;就包括,现在用的百度空间的这个文本编辑器,如果直接从WORD中写好的文章复制进来,本来…

开头轰轰烈烈,结局冷冷清清
开头轰轰烈烈,结局冷冷清清转载于:https://blog.51cto.com/xiaomage/115649

C# SQLiteHelper类似SqlHelper类实现存取Sqlite数据库
这个类不是我实现的,原文在这里,我修改了原文中分析sql语句参数的方法,将方法名修改为AttachParameters,将其修饰符修改为private,并直接传递command到这个方法,直接绑定参数到comand。修改后的代码如下 SQ…

Skype for Business Server 2015-03-后端服务器-0-准备
1. 规划-拓朴图 2. 规划-服务器 3. 准备-软件 Sql Server 2014: cn_sql_server_2014_enterprise_edition_x64_dvd_3932882.iso Sql Server 2014 CU6: Cumulative update package 6 for SQL Server 2014 https://support.microsoft.com/en-us/kb/3031047 4. 准备-虚拟…

html文档使用,使用提供 HTML 文档的过程
使用提供 HTML 文档的过程通常,编写一个可处理发送给特定服务的请求的过程是最简单的方式。这样的过程将返回一个 Web 页。或者,该过程也可接受作为 URL 的一部分进行传递的参数以对其输出进行自定义。但以下示例要简单很多。它例示了服务可以简单到什么…

这样学算法,包会包懂so easy~
整理 | Jane出品 | AI科技大本营面试前,大家都会开始刷各类网站,希望能在算法之道上有所进益,也期待有幸能在面试中碰上原题,而在那么多的网站中,LeetCode 一定是候选学习的网站之一。但是 LeetCode 网站上的题量和难度…

上映 10 天,票房就突破 10 亿的《海王》真的有那么好看?
出品:CSDN(ID:CSDNnews)写在前面本文将主要通过Python加上一些数据分析,来证明《海王》好看。《海王》一部电影带你重温《驯龙高手》《变形金刚》《星球大战》《星河战队》《铁血战士》《安德的游戏》《异形》可能还借…

利用SMS OSD实现win2008操作系统的部署
我们知道SMS是一个强大的桌面操作系统,利用SMS可以实现对客户端的软件、硬件等数据的统计,还可以管理公司的资产等等。那么利用SMS OSD是否能部署出XP、win2003、win2008等操作系统呢?今天我们就来试试用SMS OSD来部署win2008操作系统&#x…

企业域名更换操作系列1:为什么要进行域名更换及更换需要注意事项
前段时间在公司讨论对现在域结构调整时,有提到希望能重新启一套域,将现在域内信息全部进行迁移,迁移完成后再把域名改为原域名,此问题从愿景上来看是不错的,因为这种方法虽然操作比较复杂,但是对于用户体验上来看,还是有一定的帮助…

html在页面上div绝对定位,html – 中心浮动div在绝对定位div内
我有这套html和CSS.我想要的是必须让小的小工具块向左浮动但是在绝对定位的小工具包装器内部居中.因此,小工具包装器绝对位于页面底部.它包含x个小工具,它们在包装器内部浮动.所有这些小工具应该在包装器中居中 – 这是可能的,如何……?这真是让我伤心….1not setno…

主角用计算机控制身体,国漫段子手:绝技,用计算机控制挖掘机炒菜
身为古神的叶辰从神境世界陨落到了苍蓝世界,这里百州千国林立,豪强争霸,叶辰在这个苍蓝世界呆了数百年,建立了庞大的势力。在百州千国,叶辰的存在一直都是一个传说。但是来自神境世界的力量慢慢地延伸到了苍蓝世界&…

2018热点总结:BERT最热,GANs最活跃,每20分钟就有一篇论文...
作者 | Ross Taylor 译者 | linstancy 整理 | Jane 出品 | AI科技大本营 【导读】本文的作者 Ross Taylor 和 Robert Stojnic 在今年一起启动了一个名为“Paper with Code”的项目,将 AI 领域的一些研究论文和论文开源代码结合展示,方便大家学习与研究…

android之android.intent.category.DEFAULT的用途和使用
1、要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent。 Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码: [java] view plaincopy print? Intent intent new Intent(this, B.class…

MS sql server和mysql中update多条数据的例子
1.MS sql server中使用动态的表名:declare tableName nvarchar(160)set tableName t_stat_alldeclare sql nvarchar(160)print tableNameset sqlselect count(*) from tableNameexec(sql)2.mysql的例子1语句update (select sc,tos,sum(click) as click,product,adp…

OpenGL编程轻松入门(四)
1. 曲面和曲线前面我们讲了如何绘制平面的图形,这一节我们学习如何绘制曲线和曲面。例10:绘制一个曲面,本程序使用二维求值器绘制一个曲面。本例中也有一些特殊效果的操作。#include <windows.h>#include <GL/GLAUX.h>#i…

计算机科学实验教学示范中心,校领导调研计算机科学与技术国家级实验教学示范中心...
4月29日,副校长朱廷珺在实验管理中负责人陪同下,深入计算机科学与技术国家级实验教学示范中心、轨道交通信息与控制国家级虚拟仿真实验教学中心开展实地调研。在计算机实验中心,朱廷珺实地调研了计算机基础实验室、计算机软件实验室、硬件专业…

中科创达孙力:不迷信 AI 算法,智能视觉如何转型升级?
作者 | 若名 出品 | AI科技大本营 近日,中科创达副总裁孙力在 Thunder World 2018 嵌入式 AI 人工智能技术大会上发表了主题演讲,主要分享了以下三方面内容: 视觉的传统技术和挑战 嵌入式视觉AI智能视觉 智能视觉赋能行业的智能化升级转型 …

单元测试与敏捷开发
单元测试与敏捷开发 转载请保留作者信息: 作者:88250 Blog:http:/blog.csdn.net/DL88250 MSN & Gmail & QQ:DL88250gmail.com 在要求项目要尽量快地实现的时候,质量与开发进度上会出现一定的矛盾,…

“AI明星”第四范式C轮融资超10亿元,估值约12亿美元
AI科技大本营消息,12 月 19 日,第四范式宣布完成 C 轮融资,融资金额超过 10 亿元,估值约 12 亿美元。此次投资引入了包括国新、启迪、保利、三峡、中信、农银、交银等战略投资,红杉中国继续追加投资。除了原有股东中国…

精灵图 html为什么会变大,[html] 第128天 精灵图和base64如何选择呢?
可参考https://www.cnblogs.com/wangqi2019/p/10498627.htmlCss Sprites(雪碧图或css精灵),是网页图片处理的一种方式,它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图…

组策略 从入门到精通(十)通过组策略进行软件分发和卸载
其实在前面windows server 2008的一些博文中,已经介绍了如何通过组策略进行软件的分发,在windows server 2003中有些无法完成的软件分发工作在windows server 2008中已经全部纠正了。http://zhengweiit.blog.51cto.com/1109863/291156 今天我们主要来探讨…

RedHatAS4.0-RAID技术
RedHatAS4.0-RAID技术

今晚8点直播 | 详解基于百度自定义模板的OCR结果结构化处理技术
随着行业的发展和技术的成熟,文字识别(OCR)目前已经应用到了多个行业中,比如物流行业快递包裹的分拣,金融行业的支票单据识别输入,交通领域中的车牌识别,以及日常生活中的卡证、票据识别等等。O…

电脑计算机科学型,电脑里附带的计算器有标准型和科学型二种,它 – 手机爱问...
2019-06-24如何用delphi7 0设计标准型计算器这是源代码:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, ExtCtrls;type TForm1 class(TForm) Panel1: TPanel; Panel…

铜缆配线架的选择
我们现在考察一下为安装选择合适的铜缆配线架所必须考虑的因素。铜缆配线架一般分为经济型、中端或高端配线架。经济型配线架经济型配线架通常在结构上脆弱,性能不稳定交缺少技术支持或保证。配线架端接时一般会耗费较多的安装成本,没有电缆管理设备支持…

go6---slice切片
package main/* 切片Slice 其本身并不是数组,它指向底层的数组 作为变长数组的替代方案,可以关联底层数组的局部或全部 为引用类型 可以直接创建或从底层数组获取生成 使用len()获取元素个数,cap()获取容量 一般使用make()创建 如果多个slice…

TensorFlow支持Unicode,中文NLP终于省心了
整理 | 非主流出品 | AI科技大本营终于,TensorFlow 增加了对 Unicode 的支持。什么是 Unicode?Unicode 是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种…