实验环境

主服务器:192.168.138.200

从服务器:192.168.138.201

bind安装

安装很简单,执行以下命令即可:

	yum install -y bind

先看一下bind的版本和配置文件安装路径

	# named -v
BIND 9.9.4-RedHat-9.9.4-51.el7_4.2 (Extended Support Version)
# rpm -qc bind
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback

/etc/named.conf,/etc/named.rfc1912.zones是主配置文件

/var/named/named.ca是根区域解析库文件

/var/named/named.localhost,/var/named/named.loopback 是本机和环回地址的解析库文件

rndc---remote name domain controller这是一个辅助管理工具,默认情况下与BIND安装在同一主机,而且只能通过127.0.0.1连接named进程,监听的端口号是TCP/953。

配置named.conf文件

这个配置文件主要分3段内容,options是全局配置,logging是日志配置,最后是区域解析库配置以及所包含的区域解析库文件配置。

# cat /etc/named.conf
// 2个双//在这个配置文件中表示注释
options {
//下面一行表示监听的端口和IP地址,其中2个{}内部两端都要有空格,IP地址要以;号结尾。
这里的IP地址至少应该包含宿主机可以和外部通迅的地址,也可以包含一个本地回环地址供rndc工具使用。也可以简写成{ any; }
每个语句结束同样都要以;结尾,如果不需要监听IPV6可以注释掉或删除。
listen-on port 53 { 192.168.138.200; 127.0.0.1; };
// listen-on-v6 port 53 { ::1; };
//下面一行表示named的工作目录为/var/named
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";
//下面一行表示允许哪些主机查询,改成any表示所有
allow-query { any; };
//下面一行表示是否允许递归查询.
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;
};
};
//.表示根区域,这个区域是必须要有的
zone "." IN {
type hint; //hint表示根区域类型
file "named.ca"; //指定根区域解析库文件名称所在位置,相对于/var/named
};
//指定区域文件名称,所有的区域定义都可以写在named.rfc1912.zones文件中
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

配置主服务器192.168.138.200

编辑/etc/named.rfc1912.zones在文件末尾添加一个正向解析区域和一个反向解析区域

# cat /etc/named.rfc1912.zones
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
// 添加一个正向解析区域,并定义为主服务器
zone "frank.com" IN {
type master; //master表示主服务器
file "frank.com.zone"; //指明区域解析库文件,相对于/var/named/
};
//添加一个反向解析区域,并定义为主服务器
zone "138.168.192.in-addr.arpa" IN {
type master;
file "138.zone";
};

创建frank.com.zone解析库文件

# cat frank.com.zone
$TTL 1D
frank.com. IN SOA ns.frank.com. admin.frank.com. (
201802001 ;序列号
2H ;刷新时间
10M ;重试时间间隔
1W ;过期时间
1D ;无法解析时否定答案的TTL值
)
frank.com. IN NS ns1.frank.com.
IN NS ns2.frank.com.
ns1.frank.com. IN A 192.168.138.200
ns2.frank.com. IN A 192.168.138.200
frank.com. IN MX 10 mx1.frank.com.
IN MX 20 mx2.frank.com.
mx1.frank.com. IN A 192.168.138.200
mx2.frank.com. IN A 192.168.138.200
www.frank.com. IN A 192.168.138.200
master IN CNAME www.frank.com.
web IN CNAME www.frank.com.

创建138.zone反向解析库文件

# cat 138.zone
$TTL 1d
@ IN SOA ns.frank.com. admin.frank.com. (
201802001;
2H;
10M;
1W;
1D;
)
IN NS ns.frank.com.
200 IN PTR www.frank.com.
200 IN PTR ns.frank.com.

注意事项:

  • 区域解析库文件第一个记录必须是SOA记录,必须有NS记录并且正解区域要有NS记录的A记录,反解则不需要有NS记录对应的A记录。
  • $TTL表示宏定义,TTL(Time- To-Live),简单的说它表示一条域名解析记录在DNS服务器上缓存时间.当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
  • 这个文件里所有的域名结尾的点号一定不能省略。
  • 区域解析库文件是放在/var/named目录下,由named进程是以named用户运行,还要让区域解析库文件的属组为named。
# ll /var/named
total 16
drwxrwx---. 2 named named 23 Feb 21 13:10 data
drwxrwx---. 2 named named 60 Feb 21 13:11 dynamic
-rw-r-----. 1 root named 2281 May 22 2017 named.ca
-rw-r-----. 1 root named 152 Dec 15 2009 named.empty
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback
drwxrwx---. 2 named named 44 Feb 21 13:14 slaves

检查配置文件语法

# named-checkconf
没有任何输出表示 /etc/named.conf没有语法错误
# named-checkzone "frank.com" "frank.com.zone"
zone frank.com/IN: loaded serial 201802001
OK
正向解析区域检查没问题
# named-checkzone "frank.com" "138.zone"
zone frank.com/IN: loaded serial 201802001
OK
反向解析区域检查没问题

启动named服务

# systemctl start named.service

使用dig测试

dig语法使用格式:

dig -t [SOA|A|CNAME|NS|MX] 域名 [@dns服务器地址] [+[no]trace|recurse]

dig -t A web.frank.com @192.168.138.200
; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.2 <<>> -t A web.frank.com @192.168.138.200
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40444
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;web.frank.com. IN A
;; 下面就是解析出的结果
;; ANSWER SECTION:
web.frank.com. 86400 IN CNAME www.frank.com.
www.frank.com. 86400 IN A 192.168.138.200 ;; AUTHORITY SECTION:
frank.com. 86400 IN NS ns2.frank.com.
frank.com. 86400 IN NS ns1.frank.com. ;; ADDITIONAL SECTION:
ns1.frank.com. 86400 IN A 192.168.138.200
ns2.frank.com. 86400 IN A 192.168.138.200 ;; Query time: 0 msec
;; SERVER: 192.168.138.200#53(192.168.138.200)
;; WHEN: Wed Feb 21 12:35:24 CST 2018
;; MSG SIZE rcvd: 144

到此DNS主服务器已经配置完毕并能正常工作。

从服务器配置192.168.138.201

编辑/etc/named.conf将监听IP地址改一下,其它不需要更改

# cat /etc/named.conf
listen-on port 53 { 192.168.138.201; 127.0.0.1; };

编辑/etc/named.rfc1912.zones将type类型改为slave

# cat /etc/named.rfc1912.zones
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
// 添加一个正向解析区域,并定义为从服务器
zone "frank.com" IN {
type slave; //slave表示主服务器
masters { 192.168.138.200; }; //指明主服务器IP
file “slaves/frank.com"; //指定从服务区域解析库文件位置
};
//添加一个反向解析区域,并定义为主服务器
zone "138.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.138.200; };
file "slaves/138.zone";
};

注意事项:从服务器的区域解析库文件应当是从主服务器加载过来的,所以无需创建区域解析库文件。

启动named服务

# systemctl start named

检查/var/named/slaves目录

# ll /var/named/slaves/
total 8
-rw-r--r--. 1 named named 268 Feb 21 13:14 138.zone
-rw-r--r--. 1 named named 554 Feb 21 13:14 frank.com.zone

这2个文件是自动从主服务器同步过来的。

使用dig验证

dig -t MX frank.com @192.168.138.201

; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.2 <<>> -t MX frank.com @192.168.138.201
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57146
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 5 ;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;frank.com. IN MX ;; ANSWER SECTION:
frank.com. 86400 IN MX 10 mx1.frank.com.
frank.com. 86400 IN MX 20 mx2.frank.com. ;; AUTHORITY SECTION:
frank.com. 86400 IN NS ns1.frank.com.
frank.com. 86400 IN NS ns2.frank.com. ;; ADDITIONAL SECTION:
mx1.frank.com. 86400 IN A 192.168.138.200
mx2.frank.com. 86400 IN A 192.168.138.200
ns1.frank.com. 86400 IN A 192.168.138.200
ns2.frank.com. 86400 IN A 192.168.138.200 ;; Query time: 0 msec
;; SERVER: 192.168.138.201#53(192.168.138.201)
;; WHEN: Wed Feb 21 13:15:43 CST 2018
;; MSG SIZE rcvd: 178

rndc命令使用

rndc reload:
重载主配置文件和区域解析库文件,可以不用重启named服务情况下更新主配置文件和区域解析库文件。

rndc reload zone_name:
重域指定区域

rndc retransfer zone:
手动启动区域传送,不管序号是否增加或减少

rndc notify zone:
手动通知区域

rndc reconfig:
重载主配置文件

rndc querylog:
开启或关闭查询日志

关于DNS服务器

  • DNS服务器主从服务器,一般情况下主从一同工作,在客户端一般会配有多个DNS地址,如果第一个DNS地址无法解析,那么第二DNS地址也是无法解析的,当第一个DNS地址联系不上时(宕机)才会联系第二个DNS地址并寻求解析。
  • DNS服务器如果自已无法解析时会去其它服务器查询,查询到了会缓存下来,当同一用户在缓存失效之前再次请求同一记录时会优先使用缓存回应给客户端。至于缓存多长时间大了和小了都有优点和缺点,一般互联网上的DNS缓存大概要2-4小时,也就是当你在互联网更改记录一般会2-4小时后才能生效。
  • DNS服务器也可以部署成为缓存服务器。
  • DNS服务器中的转发器,部署过windows服务器的都知道,如果本机解析不了的可以使用转发器将请求转发到当地运营商的DNS服务器请求解析。

windows中的DNS服务器架设完成后,客户端会自动向DNS服务器注册,服务器端也会自动添加相应的A记录和PTR记录,linux系统当中是不是只能手动添加这些记录才能解析到局域网中的计算机名呢?

DNS主从配置详解的更多相关文章

  1. Linux系统下DNS主从配置详解

    一.DNS概述DNS(Domain Name System),即域名系统.因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串. ...

  2. MySQL主从配置详解

    一.mysql主从原理 1. 基本介绍 MySQL 内建的复制功能是构建大型,高性能应用程序的基础.将 MySQL 的 数亿分布到到多个系统上去,这种分步的机制,是通过将 MySQL 的某一台主机的数 ...

  3. mysql主从配置详解(图文)

    最近工作不是很忙,把以前整理的mysql数据库的主从配置过程记录一下,有不足之处,请各位多多纠正指教 #环境配置#master IP:192.168.46.137 slave IP:192.168.4 ...

  4. mongodb主从以及auth主从 配置详解

    1.主服务器配置   #auth = true   dbpath = /data/mongodb/db logpath = /data/mongodb/log/mongodb.log   port = ...

  5. 基于 CentOS Mysql 安装与主从同步配置详解

    CentOS Mysql 安装 Mysql (Master/Slave) 主从同步 1.为什么要使用主从同步 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操 ...

  6. Linux下DNS服务器搭建详解

    Linux下DNS服务器搭建详解 DNS  即Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种机制.其中通过域名解析 ...

  7. redis配置详解

    ##redis配置详解 # Redis configuration file example. # # Note that in order to read the configuration fil ...

  8. 阿里云slb和ucloud负载均衡ulb添加ssl证书将http服务https化的配置详解

    阿里云和ucloud服务器配置ssl证书将http服务https化的配置详解 项目背景: 苹果App于2017年1月1日将启用App Transport Security安全功能,即强制App通过HT ...

  9. 日志分析工具ELK配置详解

    日志分析工具ELK配置详解 一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分 ...

随机推荐

  1. LeetCode--023--合并K个排序链表

    合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [   1->4->5,   1->3->4,   2->6 ] 输出: 1-&g ...

  2. CRF++安装,提示libstdc++.so.6: version `GLIBCXX_3.4.20' not found解决

    安装CRF++, 到CRF++网站CRF++: Yet Another CRF toolkit,下载C++源代码安装包(这里用的是 CRF++-0.58.tar.gz ),解压,进入解压文件并如下过程 ...

  3. coursera-斯坦福-机器学习-吴恩达-笔记week1

    1 Introduction 1.1 概念:一个程序被认为能从经验E中学习,解决任务 T,达到性能度量值P,当且仅当, 有了经验E后,经过P评判, 程序在处理 T 时的性能有所提升. 1.2 机器学习 ...

  4. linux服务管理 服务管理

    系统的运行级别 运行级别 0 关机(不能设置) 1 单用户模式,类似windows的安全模式 2 不完全的命令行模式,不含NFS服务(文件共享的服务) 3 完全的命令行模式,就是标准字符界面 4 系统 ...

  5. Python字符编码的发展、cmd寻找路径

    字符编码的发展: ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示 ...

  6. ln 链接命令 简要说明 软硬链接关系说明

    ln [选项] 目标 -s 创建符号链接(软链接) -f 强制创建链接 -i 覆盖前先询问 -v 显示创建链接过程 ln命令不能对目录创建硬链接,但可以创建软链接,对目录的软链接经常被用到 删除软链接 ...

  7. eclipse工具类及插件(设置注释模板)

    (摘抄原地址)https://blog.csdn.net/xb12369/article/details/79850476(设置注释模板) 首先打开Eclipse配置选项:Window->Pre ...

  8. python自学第8天,变量,递归

    变量 #局部变量: 就是在函数里面的作用域 school="重庆文理"#全局变量 def test(name): global school#全局变量发生了改变 最好不用 scho ...

  9. oracle 11g安装过程

    1,工具:Oracle_win64_11gR2_database(64位oracle 11g数据库).iso安装文件,win10系统 2,右键,解压后,点击setup.exe,系统会检测本机的环境,如 ...

  10. dos脚本

    关于dos命令行脚本编写   dos常用命令另查 开始之前先简单说明下cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建.编辑和查看.两者所用的命令行代码也 ...