配置DNS服务器(BIND程序;named进程)
client配置
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
client配置:/etc/hosts;/etc/resolv.conf;/etc/nsswitch.conf ======================================================================================================== /etc/hosts :这个是最早的 hostname 对应 IP 的档案; /etc/resolv.conf :记录DNS服务器IP的文件,是实时生效的; #这里配置的DNS是主备关系,只要主dns正常,就一直使用主dns;不要配置过多的dns,因为客户端会逐台进行尝试,若为本地网络问题,那么就需要经历N台的超时时间。。 /etc/nsswitch.conf:这个文件的配置决定 /etc/hosts 还是 /etc/resolv.conf 优先生效。 [root@www ~]# vim /etc/nsswitch.conf hosts: files dns #file在前,所以hosts优先 使用dhcp获取IP的话,dhcp服务器同时也会进行dns的设置; 若想要在本地设置,则要在 /etc/sysconfig/network-scripts/ifcfg-eth0 等相关档案内,增加一行:『PEERDNS=no』; 否则在本地修改了dns,也会被dhcp 复原。
DNS概述
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
DNS概述;DNS架构和TLD(一级域);FQDN;授权与分层负责 ====================================================================================================== domain name server :域名解析服务 实现的软件:bind、dnsmasq、PowerDNS (本文的总结以bind为基础,bind软件对应named进程) 协议+端口:(cat /etc/services) TCP 53/UDP 53 ---实现域名解析 TCP 953 /UDP 953 ---实现rndc管理【rndc control sockets (BIND 9)】,主从DNS同步 ------------------------------------------------------------------------------------------------------ DNS架构和TLD 组织类域架构(国家类域的架构基本相同,但需要多一层国家码ccTLD) 根域:"." (称为 root) 一级域:顶级域Top Level Domains (TLDs)---顶级域需要向root (.) 注册领域名查询授权 二级域:---###一般是公司or个人向顶级域申请### ... 底层:主机名 常见的一级域: 组织类域 (Generic TLDs, gTLD):例如 .com, .org, .gov 等等 国家类域 (Country code TLDs, ccTLD):例如 .tw, .uk, .jp, .cn 等 反向域 .in-addr.arpa ------------------------------------------------------------------------------------------------------ 完整主机名: Fully Qualified Domain Name (FQDN):全网唯一表示一个主机的方式 DNS 是以树状目录分阶层的方式来处理主机名 格式:主机名.二级域.一级域.;主机名.三级域.二级域.一级域. #注意:FQDN是以"."结尾的! 实例:www.baidu.com.;www.baidu.com.cn. ------------------------------------------------------------------------------------------------------ 授权与分层负责 每一级域名都需要向上层域申请授权, 例如 :".cn" 需要向 "."申请授权,即注册;"com.cn"需要向"cn."申请授权 反过来说,只有注册授权了,那么在迭代查询过程中,这种域名管理服务器才可以查询到你的存在,进行正确地迭代 每一个域名其实对应了一台or多台主机,这些关机管理子域的域名和主机 每个上一层的 DNS 服务器所记录的信息,其实只有其下一层的主机名
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
DNS 查询主机名 IP 的流程:递归、迭代;正向解析、反向解析 ========================================================================================================= DNS 查询主机名 IP 的流程 DNS解析流程分为递归查询和迭代查询, 递归查询是以本地名称服务器为中心查询,递归查询是默认方式, 迭代查询是以DNS客户端,也就是客户机器为中心查询。 DNS客户端和本地名称服务器是递归,而本地名称服务器和其他名称服务器之间是迭代 递归recursion:递归请求只会发起一次,然后等待最终的结果;例如家庭网络,PC向家庭路由器发起的就是递归请求;家庭路由器向运营商dns发起的是递归请求 迭代iteration:需要发起多次请求,例如查询www.baidu.com ,当走迭代流程时,先找"."获知".com",再找"com."获知".baidu.com",最后找".baidu.com"获知"www.baidu.com" DNS递归名称解析: 在DNS递归名称解析中,当所配置的本地名称服务器解析不了时,后面的查询工作是由本地名称服务器替代DNS客户端进行的(以本地名称服务器为中心),只需要本地名称服务器向DNS客户端返回最终的查询结果即可 DNS迭代名称解析:(或者叫迭代查询)的所有查询工作全部是DNS客户端自己进行(以DNS客户端自己为中心)。在条件之一满足时就会采用迭代名称解析方式: 1.在查询本地名称服务器时,如果客户端的请求报文中没有申请使用递归查询,即在DNS请求报头部的RD字段没有置1。相当于说”你都没有主动要求我为你进行递归查询,我当然不会为你工作了” 2.客户端在DNS请求报文中申请使用的是递归查询(也就是RD字段置1了),但在所配置的本地名称服务器上是禁用递归查询(DNS服务器一般默认支持递归查询的),即在应答DNS报文头部的RA字段置0 dig +trace www.ksu.edu.tw #看起来就是执行迭代解析过程;即使配置为递归解析,仍然显示的是迭代解析过程 迭代查询流程:. --> .tw --> .edu.tw --> .ksu.edu.tw --> www.ksu.edu.tw ------------------------------------------------------------------------------------------------------ 正向解析:域名解析为IP 反向解析:IP解析为域名
bind安装
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
安装bind;bing安装包信息 ================================================================= yum install -y bind [root@centos7 ~]# rpm -qf `which named` bind-9.11.4-26.P2.el7_9.9.x86_64 [root@www ~]# rpm -qa | grep '^bind' bind-libs-9.7.0-5.P2.el6_0.1.x86_64 <==给 bind 与相关指令使用的函式库 bind-utils-9.7.0-5.P2.el6_0.1.x86_64 <==这个是客户端搜寻主机名的相关指令 bind-9.7.0-5.P2.el6_0.1.x86_64 <==就是 bind 主程序所需软件 bind-chroot-9.7.0-5.P2.el6_0.1.x86_64 <==将 bind 主程序关在家里面!
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/etc/sysconfig/named 与 chroot 环境 ================================================================================ 为了系统的安全性考虑,一般来说目前各主要 distributions 都已经自动的将你的 bind 相关程序给他 chroot [root@www ~]# cat /etc/sysconfig/named ROOTDIR=/var/named/chroot #这个是dns的实际根所在,但是这样使用上又很不方便 所以又使用了mount来进行挂载 mount --bind /var/named /var/named/chroot/var/named
DNS配置
cache-only (仅快取) DNS server:这个 DNS server 只有快取搜寻结果的功能
这个dns只有". zone"正向解析配置文件;除此之外,没有其他任何正反解析文件
forwarding DNS 服务器
这个服务器可以不配置任何解析配置文件,甚至连". zone"正向解析配置文件都可以没有。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
named.conf文件的相关配置:zone;master/slave 架构;/etc/named.conf配置说明 =================================================================================================================== BIND 的配置文件为 /etc/named.conf 区域 (zone):包含了一个要解析的领域 (domain) 一台DNS 服务器可以管理多个zone,即可以管理多个领域 zone类型: hint类型:zone "." hint类型,每个DNS的必备zone,记录的是13个根域的IP!!!! 其实若配置仅递归的dns服务器,那么zone "."文件也不是必要的 master类型:管理员需要手工维护master类型dns;注意对slave服务器的IP进行限制,避免受到攻击 slave类型:配置为slave后,当master更新时,slave会自动同步 在 DNS 系统当中,领域名的查询是『先抢先赢』的状态,我们不会晓得哪一部主机的数据会先被查询到的! 先抢先赢是什么鬼,PC配置了多个DNS,不是轮询的吗? ------------------------------------------------------------------------------------------------------ master/slave 架构 master:管理员需要手工维护master类型dns;注意对slave服务器的IP进行限制,避免受到攻击 slave:配置为slave后,当master更新时,slave会自动同步 Master/Slave数据的同步过程 同步依据:数据库的序列号 更新的方式主要有两种: 1.Master 主动告知:例如在 Master 在修改了数据库内容,并且加大数据库序号后, 重新启动 DNS 服务,那 master 会主动告知 slave 来更新数据库,此时就能够达成数据同步; 2.由 Slave 主动提出要求:基本上, Slave 会定时的向 Master 察看数据库的序号, 当发现 Master 数据库的序号比 Slave 自己的序号还要大 (代表比较新),那么 Slave 就会开始更新。如果序号不变, 那么就判断数据库没有更动,因此不会进行同步更新。 ------------------------------------------------------------------------------------------------------ [root@centos7 ~]# cat /etc/named.conf options { #在 named.conf 的结构中,与服务器环境有关的是由 options 这个项目内容设定的 http://cn.linux.vbird.org/linux_server/0350dns_3.php listen-on port 53 { any; }; #默认只监听127.0.0.1,此处需要修改 listen-on-v6 port 53 { ::1; }; #默认只监听::1,此处需要修改 directory "/var/named"; #仓库目录,本配置文件中的一些文件若配置为"相对路径or文件名",那么就存放在该仓库目录下 //数据库默认放置的目录所在 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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; //可不设定,代表全部接受;这里应该要配置为允许被rndc控制的IP or 网段;即填写主从DNS服务器的IP recursion yes; #是否允许递归 forward only; #only模式,仅执行转发;first模式:先查找本地zone,再转发 forwarders { 168.95.1.1; #设置递归查询的dns服务器 139.175.10.20; #设置递归查询的dns服务器 }; //最终记得要结尾符号! dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.root.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"; #log的默认配置 // severity dynamic; // }; //}; logging { channel null { null; }; channel default_stderr { stderr; severity info; }; channel query_log { file "data/named.query" versions 5 size 100m; severity dynamic; print-time yes;}; #以为可以看到查询日志,但实际无结果 channel update_log { file "data/named.update" versions 5 size 100m; severity dynamic; print-time yes;}; channel default_debug { file "data/named.run" versions 5 size 100m; severity dynamic; print-time yes;}; #debug日志,重启named进程时,可以在该文件查看到相关log channel general_debug { file "data/named.general" versions 3 size 100m; severity dynamic; print-time yes;}; channel default_syslog { file "data/named.syslog" versions 5 size 100m; severity dynamic; print-time yes; }; channel database_debug { file "data/named.database" versions 3 size 100m; severity dynamic; print-time yes;}; channel resolver_log { file "data/named.resolver" versions 3 size 100m; severity dynamic; print-time yes;}; // channel security_log { file "data/named.security" versions 3 size 100m; severity dynamic; print-time yes;}; category default { default_debug; }; category unmatched { default_debug; }; // category queries { query_log; }; category resolver { resolver_log; }; // category security { security_log; }; category update { update_log; }; }; zone "." IN { type hint; # . zone,固定使用hint类型 file "named.ca"; }; zone "aabbcc.cn" IN { #自定义zone type master; file "aabbcc.cn.zone"; allow-transfer { 192.168.1.0/24;}; #指定允许哪个网段的DNS服务器,可以同步主DNS服务器zone文件,不写默认为所有 }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
named.conf forword配置
zone "intra.test111.sg.com." IN {
type forward;
forward only;
forwarders { 10.43.0.1; 10.43.0.2; };
};
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
zone文件的相关配置;正向解析zone文件;反向解析zone文件;RR种类(SOA/NS/A/AAAA/PTR等)及格式;正向解析RR格式;反向解析RR格式 ========================================================================================================================== zone文件的相关配置 ***注意zone文件的权限问题,注意查看named日志(zone权限有问题,named进程还是可以成功重启的) 在zone文件中, "#"/";"都表示备注 "@"指代域名,所以SOA记录、NS记录、MX记录的域名都简写为@ 正向解析zone文件通常包含以下资源: SOA:就是开始验证 (Start of Authority) 的缩写,相关资料本章后续小节说明; NS:就是名称服务器 (NameServer) 的缩写,后面记录的数据是 DNS 服务器的意思; A:就是地址 (Address) 的缩写,后面记录的是 IP 的对应 (最重要); 反向解析zone:能够配置反向解析的只有IP的拥有者,所以只有ISP才有权限设置反向解析。(你到ISP取得一个固定IP也是不能假设反向解析的,必须要拥有C类及以上级别的网段) 反向解析zone文件通常包含以下资源: SOA NS PTR:就是指向 (PoinTeR) 的缩写,后面记录的数据就是反解到主机名啰! ------------------------------------------------------------------------------------------------------------------------- 资源记录Resource Record, RR [domain] [ttl] IN [[RR type] [RR data]] [待查数据] [缓存时间(秒)] IN [[资源类型] [资源内容]] #domain 尽量使用FQDN格式;当然也可以使用简写,即不以"."结尾,那么系统会自动加上域名 #ttl 缓存时间;ttl 可由特定的参数来统一控管,所以通常省略了 ------------------------------------------------------------------------------------------------------------------------- 常见的正解文件 RR 相关信息 [domain] IN [[RR type] [RR data]] 领域名. IN SOA 管理这个领域名的七个重要参数(容后说明) #域名可以用"@"符号替换 领域名. IN NS 管理这个领域名的服务器主机名字. #主机名若不是FQDN格式,则自动补全为FQDN 领域名. IN MX 优先级 接收邮件的服务器主机名字 #主机名若不是FQDN格式,则自动补全为FQDN 主机名. IN A IPv4 #主机名若不是FQDN格式,则自动补全为FQDN 主机名. IN AAAA IPv6 #主机名若不是FQDN格式,则自动补全为FQDN 主机别名. IN CNAME 实际代表这个主机别名的主机名字. #主机名若不是FQDN格式,则自动补全为FQDN ksu.edu.tw. 1596 IN NS dns1.ksu.edu.tw. www.ksu.edu.tw. 2987 IN A 120.114.100.101 dns1.ksu.edu.tw. 577 IN A 120.114.50.1 www.google.com. 557697 IN CNAME www.l.google.com. www.l.google.com. 298 IN A 72.14.203.99 ksu.edu.tw. 3600 IN MX 8 mx01.ksu.edu.tw. SOA记录的SOA字段后跟随的RR数据可以分为7个部分(SOA记录提供了DNS名称空间和服务器之间的授权联系) 1.Master DNS 服务器主机名 2.管理员的 email #由于 @ 在数据库档案中是有特别意义的,所以用.代替@ 3.序号 (Serial) #这个序号代表的是这个数据库档案的新旧,序号越大代表越新。主从dns的同步就是根据该序号进行判断的。通常序号都会使用日期格式"YYYYMMDDNU",不能超过2的32次方 4.更新频率 (Refresh) #从dns主动同步的周期时间 5.失败重新尝试时间 (Retry) 6.失效时间 (Expire) #如果从dns一直同步失败,直到超时,那么从服务器将会删除相应的zone文件 7.快取时间 (Minumum TTL) #这是最小默认 TTL 值,如果您在前面没有用“$TTL”来定义,就会以此值为准。 ###注意:SOA记录只能有一个,同时zone配置文件中的第一个记录必须是SOA记录 建议设置 Refresh >= Retry *2 Refresh + Retry < Expire Expire >= Rrtry * 10 Expire >= 7Days dig www.aabbcc.cn #其实这个查询,也可以看到哪台dns设备该域名的;查询结果先看到A记录,再看到NS记录 dig -t ns aabbcc.cn #查询NS记录,看看这个域名是哪台dns设备进行管理的,查询结果可以先看到NS记录,再看到A记录 dig -t soa aabbcc.cn #查看SOA记录,结果会先显示SOA记录,再显示NS记录,最后显示A记录 ------------------------------------------------------------------------------------------------------------------------- 反向解析RR格式 反向解析文件只有ISP才能配置 能够配置反向解析的只有IP的拥有者,所以只有ISP才有权限设置反向解析。(你到ISP取得一个固定IP也是不能假设反向解析的,必须要拥有C类及以上级别的网段) PTR记录格式 IP逆序+固定的(.in-addr.arpa.) 101.100.114.120.in-addr.arpa. 3600 IN PTR www.ksu.edu.tw. 例如 120.114.100.0/24 这个 class C IP 网段的反解设定,就必须要写成: 100.114.120.in-addr.arpa. 这样的 zone 名称 反解最重要的地方:后面的主机名尽量使用完整 FQDN,亦即加上小数点 (.) 举 100.114.120.in-addr.arpa. 为例,如果你只是填写主机名,并没有填写领域名, 那么当人家追踪你的主机名时,你的主机名会变成: www.100.114.120.in-addr.arpa. 的怪模样
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
鸟哥的master dns服务器配置案例 现在假设鸟哥的区网环境中想要设定 DNS 服务器, 鸟哥的区网原本规划的域名就是 centos.vbird,且搭配的 IP 网段为 192.168.100.0/24 这一段,因此主要的正解网域为 centos.vbird,而反解的网域则为 192.168.100.0/24, 鸟哥的这部 DNS 服务器想要自己找寻 .(root) 而不透过 forwarders 的辅助,因此还得要 . 的领域正解档。 1.主配置文件 /etc/named.conf [root@www ~]# vim /etc/named.conf options { 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 { any; }; recursion yes; #配置该dns服务器具备递归查询功能 allow-transfer { none; }; #除非你有 slave DNS 服务器,否则这里不要开放;这里应该是根据从dns进行有限开放 }; zone "." IN { type hint; file "named.ca"; }; zone "centos.vbird" IN { // 这个 zone 的名称 #配置正解 type master; file "named.centos.vbird"; }; zone "100.168.192.in-addr.arpa" IN { #配置反解 type master; file "named.192.168.100"; }; 2.named.ca:"." zone 配置文件;由 bind 软件提供的正向解析文件 [root@www ~]# vim /var/named/named.ca . <==这里有个小数点 518400 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4 # 上面这两行是成对的!代表点由 A.ROOT-SERVERS.NET. 管理,并附上 IP 查询 . <==这里有个小数点 518400 IN NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 IN A 202.12.27.33 M.ROOT-SERVERS.NET. 3600000 IN AAAA 2001:dc3::35 # 上面这三行是成对的,代表 M 开头的服务器有 A 与 AAAA 的记录 3.named.centos.vbird:"centos.vbird"域的正向解析文件 ###注意,这里犯错了,直接复制系统的默认配置文件,没注意权限问题,虽然重启named进程没有报错,但是实测dns解析一直失败,实际上/var/named/messages中一直是有错误日志的! 所有设定数据一定要从行首开始,前面不可有空格符。若有空格符,代表延续前一个 domain @ 这个符号代表 zone ;例如写在 named.centos.vbird 中,@ 代表 centos.vbird.,如果写在 named.192.168.100 档案中,则 @ 代表 100.168.192.in-addr.arpa. 的意思 . 这个点 (.) 很重要!因为他代表一个完整主机名 (FQDN) 而不是仅有 hostname ; 代表批注符号~似乎 # 也是批注~两个符号都能使用 一个正向解析数据库设定,至少应该要有 $TTL, SOA, NS (与这部 NS 主机名的 A) $TTL 为了简化每笔 RR 记录的设定,因此我们将 TTL 挪到最前面统一设定。 $ORIGIN 这个设定值可以重新指定 zone 的定义。#一般情况下,每个正向解析文件的zone由named.conf文件指定,但是这个zone是可以由$ORIGIN来修改的。 [root@www ~]# vim /var/named/named.centos.vbird # 与整个领域相关性较高的设定包括 NS, A, MX, SOA 等标志的设定处! $TTL 600 @ IN SOA master.centos.vbird. vbird.www.centos.vbird. (2011080401 3H 15M 1W 1D ) @ IN NS master.centos.vbird. ; DNS 服务器名称 master.centos.vbird. IN A 192.168.100.254 ; DNS 服务器 IP @ IN MX 10 www.centos.vbird. ; 领域名的邮件服务器 # 针对 192.168.100.254 这部主机的所有相关正解设定。 www.centos.vbird. IN A 192.168.100.254 linux.centos.vbird. IN CNAME www.centos.vbird. ftp.centos.vbird. IN CNAME www.centos.vbird. forum.centos.vbird. IN CNAME www.centos.vbird. # 其他几部主机的主机名正解设定。 slave.centos.vbird. IN A 192.168.100.10 clientlinux.centos.vbird. IN A 192.168.100.10 workstation.centos.vbird. IN A 192.168.1.101 winxp.centos.vbird. IN A 192.168.100.20 win7 IN A 192.168.100.30 ; 这是简化的写法! 4.named.192.168.100:"100.168.192.in-addr.arpa"域反向解析文件 [root@www ~]# vim /var/named/named.192.168.100 $TTL 600 @ IN SOA master.centos.vbird. vbird.www.centos.vbird. ( 2011080401 3H 15M 1W 1D ) @ IN NS master.centos.vbird. 254 IN PTR master.centos.vbird. ; 将原本的 A 改成 PTR 的标志而已 254 IN PTR www.centos.vbird. ; 这些是特定的 IP 对应 10 IN PTR slave.centos.vbird. 20 IN PTR winxp.centos.vbird. 30 IN PTR win7.centos.vbird. 101 IN PTR dhcp101.centos.vbird. ; 可能针对 DHCP (第十二章) 的 IP 设定 102 IN PTR dhcp102.centos.vbird. ....(中间省略).... 200 IN PTR dhcp200.centos.vbird. 5.启动dns systemctl start named systemctl enable named tail -n 30 /var/log/messages | grep named 6.修改PC的dns服务器,并进行验证 vim /etc/resolv.conf 检查 master.centos.vbird 以及 www.centos.vbird 的 A 标志 dig master.centos.vbird dig www.centos.vbird 检查 ftp.centos.vbird 与 winxp 等等的 A 标志 dig ftp.centos.vbird dig winxp.centos.vbird 检查 centos.vbird 这个 zone 的 MX dig -t mx centos.vbird 检查 192.168.100.254 及 192.168.100.10 的反解 dig -x 192.168.100.254 dig -x 192.168.100.10 7.dns数据库的更新 a.增删改zone文件的RR记录 b.修改zone文件的序列号 c.重新启动 named (或者让named重新读取配置文件)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
slave dns服务器的配置 slave DNS 服务器本身并没有数据库,他的数据库是由 master DNS 所提供的 1.master DNS 服务器的配置 ###修改 named.conf,主要修改 zone 参数内的 allow-transfer 项目 [root@www ~]# vim /etc/named.conf ....前面省略.... zone "centos.vbird" IN { type master; #类型为master file "named.centos.vbird"; allow-transfer { 192.168.100.10; }; // 在这里新增 slave 的 IP,可以成网段形式,例如192.168.1.0/24 }; zone "100.168.192.in-addr.arpa" IN { type master; #类型为master file "named.192.168.100"; allow-transfer { 192.168.100.10; }; // 在这里新增 slave 的 IP,可以成网段形式,例如192.168.1.0/24 }; ###在 zone file 里面新增 NS 标志,要注意需要有 A(正解) 及 PTR(反解) 的设定 [root@www ~]# vim /var/named/named.centos.vbird $TTL 600 @ IN SOA master.centos.vbird. vbird.www.centos.vbird. ( 2011080402 3H 15M 1W 1D ) #注意修改序列号 @ IN NS master.centos.vbird. @ IN NS slave.centos.vbird. #需要新增NS资源记录 master.centos.vbird. IN A 192.168.100.254 slave.centos.vbird. IN A 192.168.100.10 #新增NS资源记录对应的A记录 @ IN MX 10 www.centos.vbird. ....(底下省略).... [root@www ~]# vim /var/named/named.192.168.100 $TTL 600 @ IN SOA master.centos.vbird. vbird.www.centos.vbird. ( 2011080402 3H 15M 1W 1D ) @ IN NS master.centos.vbird. @ IN NS slave.centos.vbird. #同上 254 IN PTR master.centos.vbird. 10 IN PTR slave.centos.vbird. #同上 ....(底下省略).... ###修改完毕后,重启named进程 [root@www ~]# /etc/init.d/named restart [root@www ~]# tail -n 30 /var/log/messages | grep named starting BIND 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 -u named -t /var/named/chroot ....(中间省略).... zone 100.168.192.in-addr.arpa/IN: loaded serial 2011080402 zone centos.vbird/IN: loaded serial 2011080402 zone 100.168.192.in-addr.arpa/IN: sending notifies (serial 2011080402) zone centos.vbird/IN: sending notifies (serial 2011080402) 2.Slave DNS 的配置与数据库权限问题 ###安装bind程序 过程略…… ###Slave DNS的 named.conf 配置: [root@clientlinux ~]# vim /etc/named.conf ....(前面的部分完全与 master.centos.vbird 相同,故省略).... zone "centos.vbird" IN { type slave; #类型为slave file "slaves/named.centos.vbird"; masters { 192.168.100.254; }; #master DNS 的 IP }; zone "100.168.192.in-addr.arpa" IN { type slave; #类型为slave file "slaves/named.192.168.100"; masters { 192.168.100.254; }; #master DNS 的 IP }; ###检查 存放 zone file 的目录权限是否正确: [root@clientlinux ~]# ll -d /var/named/slaves drwxrwx---. 2 named named 4096 2011-06-25 11:48 /var/named/slaves # 注意权限、使用者以及群组三个字段的数据!需要与 named 这个用户及群组有关! [root@clientlinux ~]# ll -dZ /var/named/slaves drwxrwx---. named named system_u:object_r:named_cache_t:s0 /var/named/slaves # 也不要忘记与 SELinux 有关的事情! 3.启动Slave DNS 并进行测试 [root@clientlinux ~]# /etc/init.d/named start [root@clientlinux ~]# chkconfig named on [root@clientlinux ~]# tail -n 30 /var/log/messages | grep named starting BIND 9.7.0-P2-RedHat-9.7.0-5.P2.el6_0.1 -u named -t /var/named/chroot loading configuration from '/etc/named.conf' ....(中间省略).... running zone 100.168.192.in-addr.arpa/IN: Transfer started. zone 100.168.192.in-addr.arpa/IN: transferred serial 2011080402 zone centos.vbird/IN: Transfer started. zone centos.vbird/IN: transferred serial 2011080402 <==注意序号正确否 # 你会看到如上的讯息,重点是还有告知序号喔!非常重要! [root@clientlinux ~]# ll /var/named/slaves -rw-r--r--. 1 named named 3707 2011-08-05 14:12 named.192.168.100 -rw-r--r--. 1 named named 605 2011-08-05 14:12 named.centos.vbird # 这两个 zone file 会主动被建立起来呢! [root@clientlinux ~]# dig master.centos.vbird @127.0.0.1 [root@clientlinux ~]# dig -x 192.168.100.254 @127.0.0.1 # 上述两个检测的指令如果是正确的显示出 A 与 PTR 的话,那就完成了!
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
配置子域 DNS 服务器 1.上层 DNS 服务器:只需新增 zone file 的 NS 与 A 即可 [root@www ~]# vim /var/named/named.centos.vbird @ IN SOA master.centos.vbird. vbird.www.centos.vbird. ( 2011080501 3H 15M 1W 1D ) niki.centos.vbird. IN NS dns.niki.centos.vbird. #新增NS记录,看起来和新增普通的NS记录是一样的,但是注意,这条NS的域名和zone文件对应的域名不一致 dns.niki.centos.vbird. IN A 192.168.100.200 #新增A记录 [root@www ~]# /etc/init.d/named restart [root@www ~]# tail -n 30 /var/log/messages | grep named Aug 5 14:22:36 www named[9564]: zone centos.vbird/IN: loaded serial 2011080501 # 登录档的关键是上面的序号部分~必须是我们填写的新的序号才对! [root@www ~]# dig dns.niki.centos.vbird @127.0.0.1 # 你会发现无结果。 注意,新增的NS的域名和zone文件对应的域名不一致 猜测:因为上面配置的关系,所以会去找"dns.niki.centos.vbird."这台DNS查询A记录,而此时"dns.niki.centos.vbird."还未搭建 2.下层 DNS 服务器:需要有完整的 zone 相关设定 修改 named.conf ,增加 zone 的参数,假设档名为 named.niki.centos.vbird [root@niki ~]# vim /etc/named.conf ....(前面省略).... zone "niki.centos.vbird" IN { type master; file "named.niki.centos.vbird"; }; 配置 named.niki.centos.vbird [root@niki ~]# vim /var/named/named.niki.centos.vbird $TTL 600 @ IN SOA dns.niki.centos.vbird. root.niki.centos.vbird. ( 2011080501 3H 15M 1W 1D ) @ IN NS dns.niki.centos.vbird. dns IN A 192.168.100.200 www IN A 192.168.100.200 @ IN MX 10 www.niki.centos.vbird. @ IN A 192.168.100.200 # 为了简化整个版面,所以鸟哥都使用 hostname 而非 FQDN!请见谅! 启动并观察相关登录信息 [root@niki ~]# /etc/init.d/named restart [root@niki ~]# tail -n 30 /var/log/messages | grep named ....(前面省略).... zone niki.centos.vbird/IN: loaded serial 2011080501 ....(底下省略).... # 同时,记得处理一下防火墙的放行问题!否则测试会失败!! [root@niki ~]# dig www.niki.centos.vbird @192.168.100.254 # 上述的动作必须要有响应才行!否则就会出问题~
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
BIND日志 ========================================================================== 注意:zone文件权限不对,named进程仍然是可以成功重启的。 https://blog.csdn.net/linggang_123/article/details/109216807 下面是可用的分类和相关的简明描述,以后的BIND版本中会包含更多的分类: default: 默认分类,没有分类的日志都使用这个分类的配置. general: 没有分类的日志都记录在此分类中. database: 服务器内部使用存储zone和缓存数据. security: 允许/拒绝的请求. config: 配置文件分析和处理. resolver: DNS解析,被dns缓存服务器进行递归查询. xfer-in: 接收区域传输. xfer-out: 发送区域传输. notify: NOTIFY协议. client: 客户端请求进程. unmatched: 未匹配的查询. network: 网络操作. update: 动态更新. update-security: 允许/拒绝更新请求. queries: 客户端队列日志. dispatch: 数据包传送日志. dnssec: DNSSEC和TSIG协议处理. lame-servers: 远端的配置错误的服务器发送的请求. delegation-only: NXDOMAIN的结果将被强制定义到delegation-only区域. --------------------------------------------------------------------------------------------------------------- [root@www ~]# tail -n 30 /var/log/messages | grep named Apr 24 17:04:27 centos7 named[19455]: starting BIND 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 (Extended Support Version) <id:7107deb> Apr 24 17:04:27 centos7 named[19455]: running on Linux x86_64 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 Apr 24 17:04:27 centos7 named[19455]: built with '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--disable-dependency-tracking' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--with-python=/usr/bin/python' '--with-libtool' '--localstatedir=/var' '--enable-threads' '--enable-ipv6' '--enable-filter-aaaa' '--enable-rrl' '--with-pic' '--disable-static' '--includedir=/usr/include/bind9' '--with-geoip' '--with-libidn' '--enable-openssl-hash' '--enable-native-pkcs11' '--with-pkcs11=/usr/lib64/pkcs11/libsofthsm2.so' '--with-dlopen=yes' '--with-dlz-ldap=yes' '--with-dlz-postgres=yes' '--with-dlz-mysql=yes' '--with-dlz-filesystem=yes' '--with-dlz-bdb=yes' '--with-gssapi=yes' '--disable-isc-spnego' '--with-lmdb=no' '--with-atf=yes' '--enable-fixed-rrset' '--with-tuning=large' '--with-docbook-xsl=/usr/share/sgml/docbook/xsl-stylesheets' '--enable-full-report' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'CFLAGS= -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' 'LDFLAGS=-Wl,-z,relro ' 'CPPFLAGS= -DDIG_SIGCHASE' Apr 24 17:04:27 centos7 named[19455]: running as: named -u named -c /etc/named.conf -4 Apr 24 17:04:27 centos7 named[19455]: compiled by GCC 4.8.5 20150623 (Red Hat 4.8.5-44) Apr 24 17:04:27 centos7 named[19455]: compiled with OpenSSL version: OpenSSL 1.0.2k 26 Jan 2017 Apr 24 17:04:27 centos7 named[19455]: linked to OpenSSL version: OpenSSL 1.0.2k-fips 26 Jan 2017 Apr 24 17:04:27 centos7 named[19455]: compiled with libxml2 version: 2.9.1 Apr 24 17:04:27 centos7 named[19455]: linked to libxml2 version: 20901 Apr 24 17:04:27 centos7 named[19455]: compiled with zlib version: 1.2.7 Apr 24 17:04:27 centos7 named[19455]: linked to zlib version: 1.2.7 Apr 24 17:04:27 centos7 named[19455]: threads support is enabled Apr 24 17:04:27 centos7 named[19455]: ---------------------------------------------------- Apr 24 17:04:27 centos7 named[19455]: BIND 9 is maintained by Internet Systems Consortium, Apr 24 17:04:27 centos7 named[19455]: Inc. (ISC), a non-profit 501(c)(3) public-benefit Apr 24 17:04:27 centos7 named[19455]: corporation. Support and training for BIND 9 are Apr 24 17:04:27 centos7 named[19455]: available at https://www.isc.org/support Apr 24 17:04:27 centos7 named[19455]: ---------------------------------------------------- Apr 24 17:04:27 centos7 named[19455]: adjusted limit on open files from 4096 to 1048576 Apr 24 17:04:27 centos7 named[19455]: found 1 CPU, using 1 worker thread Apr 24 17:04:27 centos7 named[19455]: using 1 UDP listener per interface Apr 24 17:04:27 centos7 named[19455]: using up to 21000 sockets Apr 24 17:04:27 centos7 named[19455]: loading configuration from '/etc/named.conf' Apr 24 17:04:27 centos7 named[19455]: reading built-in trust anchors from file '/etc/named.root.key' Apr 24 17:04:27 centos7 named[19455]: initializing GeoIP Country (IPv4) (type 1) DB Apr 24 17:04:27 centos7 named[19455]: GEO-106FREE 20180327 Build 1 Copyright (c) 2018 MaxMind Inc All Rights Reserved Apr 24 17:04:27 centos7 named[19455]: initializing GeoIP Country (IPv6) (type 12) DB Apr 24 17:04:27 centos7 named[19455]: GEO-106FREE 20180605 Build 1 Copyright (c) 2018 MaxMind Inc All Rights Reserved Apr 24 17:04:27 centos7 named[19455]: GeoIP City (IPv4) (type 2) DB not available Apr 24 17:04:27 centos7 named[19455]: GeoIP City (IPv4) (type 6) DB not available Apr 24 17:04:27 centos7 named[19455]: GeoIP City (IPv6) (type 30) DB not available Apr 24 17:04:27 centos7 named[19455]: GeoIP City (IPv6) (type 31) DB not available Apr 24 17:04:27 centos7 named[19455]: GeoIP Region (type 3) DB not available Apr 24 17:04:27 centos7 named[19455]: GeoIP Region (type 7) DB not available Apr 24 17:04:27 centos7 named[19455]: GeoIP ISP (type 4) DB not available Apr 24 17:04:27 centos7 named[19455]: GeoIP Org (type 5) DB not available Apr 24 17:04:27 centos7 named[19455]: GeoIP AS (type 9) DB not available Apr 24 17:04:27 centos7 named[19455]: GeoIP Domain (type 11) DB not available Apr 24 17:04:27 centos7 named[19455]: GeoIP NetSpeed (type 10) DB not available Apr 24 17:04:27 centos7 named[19455]: using default UDP/IPv4 port range: [32768, 60999] Apr 24 17:04:27 centos7 named[19455]: listening on IPv4 interface lo, 127.0.0.1#53 Apr 24 17:04:27 centos7 named[19455]: listening on IPv4 interface eth0, 172.17.22.136#53 Apr 24 17:04:27 centos7 named[19455]: listening on IPv4 interface virbr0, 192.168.122.1#53 Apr 24 17:04:27 centos7 named[19455]: binding TCP socket: address in use Apr 24 17:04:27 centos7 named[19455]: listening on IPv4 interface docker0, 10.0.32.1#53 Apr 24 17:04:27 centos7 named[19455]: generating session key for dynamic DNS Apr 24 17:04:27 centos7 named[19455]: sizing zone task pool based on 7 zones Apr 24 17:04:27 centos7 named[19455]: none:104: 'max-cache-size 90%' - setting to 1654MB (out of 1837MB) Apr 24 17:04:27 centos7 named[19455]: set up managed keys zone for view _default, file '/var/named/dynamic/managed-keys.bind' Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 10.IN-ADDR.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 16.172.IN-ADDR.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 17.172.IN-ADDR.ARPA ………………………………………………………………………………………………………………………… Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 126.100.IN-ADDR.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 127.100.IN-ADDR.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 127.IN-ADDR.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 254.169.IN-ADDR.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 2.0.192.IN-ADDR.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 100.51.198.IN-ADDR.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 113.0.203.IN-ADDR.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 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.0.IP6.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: D.F.IP6.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 8.E.F.IP6.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 9.E.F.IP6.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: A.E.F.IP6.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: B.E.F.IP6.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: EMPTY.AS112.ARPA Apr 24 17:04:27 centos7 named[19455]: automatic empty zone: HOME.ARPA Apr 24 17:04:27 centos7 named[19455]: none:104: 'max-cache-size 90%' - setting to 1654MB (out of 1837MB) Apr 24 17:04:27 centos7 named[19455]: configuring command channel from '/etc/rndc.key' Apr 24 17:04:27 centos7 named[19455]: command channel listening on 127.0.0.1#953 [root@centos7 data]# tail -10 named.run 24-Apr-2022 14:42:17.604 zone 0.in-addr.arpa/IN: loaded serial 0 24-Apr-2022 14:42:17.610 zone aabbcc.cn/IN: loaded serial 0 24-Apr-2022 14:42:17.610 zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 24-Apr-2022 14:42:17.611 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: loaded serial 0 24-Apr-2022 14:42:17.611 zone localhost/IN: loaded serial 0 24-Apr-2022 14:42:17.611 zone localhost.localdomain/IN: loaded serial 0 24-Apr-2022 14:42:17.611 all zones loaded 24-Apr-2022 14:42:17.611 running 24-Apr-2022 14:42:17.619 zone aabbcc.cn/IN: sending notifies (serial 0) 24-Apr-2022 14:42:18.537 managed-keys-zone: Key 20326 for zone . acceptance timer complete: key now trusted
DNS主从秘钥认证
略