Linux学习 71 DNS服务实现-基于Linux平台bind安装和配置
一、回顾
1、资源记录类型:SOA,NS,MX,A,AAAA,PTR,CNAME
2、区域传送:完全区域传送和增量区域传送
3、资源记录定义的格式
name [ttl] IN RR_TYPE value
4、SOA:
序列号,刷新时长,重试时长,过期时长,否定答案的TTL
M,H,D,W
5、课外练习,注册一个域名,修改其域名解析服务器为dnspod.cn,dns.la
二、DNS and Bind
1、BIND的安装配置
BIND:Berkeley Internet Name Domain,ISC.org
a、dns:协议
b、bind:dns协议的一种实现,其程序运行起来后其程序名叫named,即名称服务
c、named:bind程序的运行的进程名
2、BIND的程序包
a、我们的镜像中就有
[root@wohaoshuai1 ~]# yum info bind 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile 可安装的软件包 名称 :bind 架构 :x86_64 时期 :32 版本 :9.9.4 发布 :61.el7 大小 :1.8 M 源 :base-local 简介 : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server 网址 :http://www.isc.org/products/BIND/ 协议 : ISC 描述 : BIND (Berkeley Internet Name Domain) is an implementation of the DNS : (Domain Name System) protocols. BIND includes a DNS server (named), : which resolves host names to IP addresses; a resolver library : (routines for applications to use when interfacing with DNS); and : tools for verifying that the DNS server is operating properly.
b、相应的包
(1)、bind-libs:被bind和bind-utils包中的程序共同用到的库文件,默认会安装
(2)、bind-utils:bind客户端程序集,例如 dig,host,nslookup等,默认会安装
(3)、bind:提供dns server程序,以及几个常用的测试程序
(4)、bind-chroot:选装,让named运行于jail模式下,即沙箱下
三、BIND
1、bind安装
a、安装
[root@www /]# yum install -y bind
b、查看配置文件
[root@www /]# rpm -ql bind /etc/logrotate.d/named /etc/named /etc/named.conf /etc/named.iscdlv.key /etc/named.rfc1912.zones /etc/named.root.key /etc/rndc.conf /etc/rndc.key /etc/rwtab.d/named /etc/sysconfig/named /run/named .... /usr/sbin/named /usr/sbin/named-checkconf #检查配置文件是否有错误 /usr/sbin/named-checkzone #检查区域数据库是否有错误 /usr/sbin/named-compilezone #手动编译区域文件为二进制格式的程序 /usr/sbin/named-journalprint ....
c、配置文件介绍
(1)、主配置文件:/etc/named.conf,可用include指令包含进其他文件,比如
/etc/named.iscdlv.key,/etc/named.rfc1912.zones,/etc/named.root.key
[root@www /]# tail -3 /etc/named.conf include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
(2)、解析库文件:/var/named/目录下
1)、一般名字为:ZONE_NAME.zone
2)、注意:
i、一台DNS服务器可同时为多个区域提供解析
ii、必须要有根区域解析库文件:named.ca
iii、还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库
正向:named.localhost
反向:named.loopback
[root@www /]# ll /var/named/ 总用量 16 drwxrwx--- 2 named named 6 8月 4 2017 data drwxrwx--- 2 named named 6 8月 4 2017 dynamic -rw-r----- 1 root named 2281 5月 22 2017 named.ca -rw-r----- 1 root named 152 12月 15 2009 named.empty -rw-r----- 1 root named 152 6月 21 2007 named.localhost -rw-r----- 1 root named 168 12月 15 2009 named.loopback drwxrwx--- 2 named named 6 8月 4 2017 slaves [root@www /]# cat /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 [root@www /]# cat /var/named/named.loopback $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 PTR localhost.
(3)、rndc(remote name domain contoller):bind的辅助类文件rndc,即名称服务器的控制工具,他是名称服务器的一个远程控制工具,他可以控制一个name server的很多操作方式,比如,更新缓存,清空缓存,停止服务等。他默认工作在TCP的953端口,默认只能通过127.0.0.1进行操作,即默认监听于127.0.0.1地址。
[root@www /]# rpm -ql bind|grep rndc /etc/rndc.conf /etc/rndc.key /usr/lib/systemd/system/named-setup-rndc.service /usr/libexec/generate-rndc-key.sh /usr/sbin/rndc /usr/sbin/rndc-confgen /usr/share/doc/bind-9.9.4/man.rndc-confgen.html /usr/share/doc/bind-9.9.4/man.rndc.conf.html /usr/share/doc/bind-9.9.4/man.rndc.html /usr/share/man/man5/rndc.conf.5.gz /usr/share/man/man8/rndc-confgen.8.gz /usr/share/man/man8/rndc.8.gz
2、bind启动
a、bind程序安装完之后,默认即可作为缓存名称服务器使用,这个缓存名称服务器他所能提供给我们的功能就是可以让其它客户机把dns服务器指向这台主机,从而能够他不负责区域解析时能帮我们在互联网上找根,等等迭代以后找到所有可解析地址,前提是他要能访问互联网才行。如果没有专门负责解析的区域,直接可启动服务。
b、服务启动
(1)、CentOS6:service named start
(2)、CentOS7:systemctl start named
[root@www /]# rpm -ql bind |grep named.service /usr/lib/systemd/system/named.service
(3)、我们来看/etc/named.conf这个主配置文件格式
1)、全局配置段:
options{...}
2)、日志配置段:
logging{...}
3)、区域配置段:
zone{...}
那些由本机负责解析的区域,或转发的区域
4)、注意,每个配置语句必须以分号结尾,否则为语法错误。并且花括号前后必须有空格,否则有语法错误
5)、缓存名称服务器的配置:
i、监听能与外部主机通信的地址
listen-on port 53 { 192.168.10.13; };
ii、学习时,建议关闭dnssec
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;
iii、关闭仅允许本地查询:
//allow-query { localhost; }
[root@www /]# cat /etc/named.conf|grep -vE "^$|^//" options { listen-on port 53 { 192.168.10.13; }; 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; }; /* - 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 */ recursion yes; dnssec-enable no; dnssec-validation no; /* 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; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
(4)、我们来检查配置文件的语法错误
named-checkconf [/etc/named.conf]
[root@www /]# named-checkconf
[root@www /]# named-checkconf -h usage: named-checkconf [-h] [-j] [-p] [-v] [-z] [-t directory] [named.conf] [root@www /]# named-checkconf /etc/named.conf
(5)、我们来启动服务并检查状态
[root@www /]# systemctl start named [root@www /]# systemctl status named ● named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled) Active: active (running) since 六 2020-05-09 10:01:56 CST; 5s ago Process: 2189 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS) Process: 2186 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (cod e=exited, status=0/SUCCESS) Main PID: 2191 (named) Memory: 11.8M CGroup: /system.slice/named.service └─2191 /usr/sbin/named -u named -c /etc/named.conf 5月 09 10:01:56 www.wohaoshuai.com named[2191]: command channel listening on ::1#953 5月 09 10:01:56 www.wohaoshuai.com named[2191]: managed-keys-zone: loaded serial 0 5月 09 10:01:56 www.wohaoshuai.com named[2191]: zone 0.in-addr.arpa/IN: loaded serial 0 5月 09 10:01:56 www.wohaoshuai.com named[2191]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 5月 09 10:01:56 www.wohaoshuai.com named[2191]: zone localhost.localdomain/IN: loaded serial 0 5月 09 10:01:56 www.wohaoshuai.com named[2191]: zone localhost/IN: loaded serial 0 5月 09 10:01:56 www.wohaoshuai.com named[2191]: 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 5月 09 10:01:56 www.wohaoshuai.com named[2191]: all zones loaded 5月 09 10:01:56 www.wohaoshuai.com named[2191]: running 5月 09 10:01:56 www.wohaoshuai.com systemd[1]: Started Berkeley Internet Name Domain (DNS).
(6)、我们来查看端口
[root@www /]# netstat -tunlp|grep named tcp 0 0 192.168.10.13:53 0.0.0.0:* LISTEN 2191/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 2191/named tcp6 0 0 ::1:953 :::* LISTEN 2191/named udp 0 0 192.168.10.13:53 0.0.0.0:* 2191/named
3、测试工具
a、dig命令
dig [-t RR_TYPE] name [@SERVER] [query options]
-t RR_TYPE表示指明资源记录的类型,name表示我把哪一个名字解析为哪一个资源记录对应的值,@SERVER表示通过哪一个服务器来解析,如果我们加了@SERVER的话那么对于默认情况下/etc/resolv.conf这个文件的定义的nameserver来说就没有意义了,这表示我们用指定的服务器来做测试。[query options]表示指定的查询选项
(1)、用于测试dns系统,因此其不会查询hosts文件
(2)、查询选项
1)、+[no]trace:跟踪解析过程,加no表示不跟踪,不加表示跟踪
2)、+[no]recurse:进行递归解析,加no表示不进行递归解析,不加表示进行递归解析
(3)、实例
1)、测百度
[root@node2 /]# dig -t A www.baidu.com ; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> -t A www.baidu.com ;; global options: +cmd #全局属性 ;; Got answer: #表示已经获得答案了 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13374 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 #标志位,qr表示查询请求,ra表示查询答案 ;; OPT PSEUDOSECTION: #表示假选项段,没什么意义 ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: #查询的问题,问题是你要去查询www.baidu.com的A记录 ;www.baidu.com. IN A ;; ANSWER SECTION: # #答案段,表示服务器端显示的答案 www.baidu.com. 205 IN CNAME www.a.shifen.com. #表示www.baidu.com没有A记录,他只有一个CNAME记录,为www.a.shifen.com. www.a.shifen.com. 241 IN A 36.152.44.95 #这个www.a.shifen.com.有一个地址是36.152.44.95 www.a.shifen.com. 241 IN A 36.152.44.96 #这个www.a.shifen.com.还有一个地址是36.152.44.96
;;AUTHORITY SECTION: #权威段,表示谁来负责解析的,为了足够可靠,对方提供了多台dns服务器来负责a.shifen.com.这个域
a.shifen.com. 1063 IN NS ns1.a.shifen.com. #表示a.shifen.com.这个域是由ns1.a.shifen.com.这个dns服务器来负责的
a.shifen.com. 1063 IN NS ns2.a.shifen.com. #表示a.shifen.com.这个域是由ns2.a.shifen.com.这个dns服务器来负责的
a.shifen.com. 1063 IN NS ns3.a.shifen.com. #表示a.shifen.com.这个域是由ns3.a.shifen.com.这个dns服务器来负责
;;ADDITIONAL SECTION: #相当于把我们负责a.shifen.com.域的服务器解析为了ip地址
ns1.a.shifen.com. 1063 IN A 115.239.210.176
ns2.a.shifen.com. 1063 IN A 119.75.222.17
ns3.a.shifen.com. 1063 IN A 61.135.165.224
;; Query time: 79 msec #查询执行时长
;; SERVER: 114.114.114.114#53(114.114.114.114) #由哪个服务器负责解析的,
;; WHEN: Sat May 09 18:24:29 CST 2020
;; MSG SIZE rcvd: 101
2)、我们现在来测百度并且添加跟踪过程
[root@node2 /]# dig +trace -t A www.baidu.com ; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> +trace -t A www.baidu.com ;; global options: +cmd #他先找根节点服务器,我们可以看到全球一共有十三个根节点服务器 . 2379 IN NS k.root-servers.net. . 2379 IN NS c.root-servers.net. . 2379 IN NS f.root-servers.net. . 2379 IN NS e.root-servers.net. . 2379 IN NS j.root-servers.net. . 2379 IN NS m.root-servers.net. . 2379 IN NS h.root-servers.net. . 2379 IN NS a.root-servers.net. . 2379 IN NS d.root-servers.net. . 2379 IN NS b.root-servers.net. . 2379 IN NS i.root-servers.net. . 2379 IN NS g.root-servers.net. . 2379 IN NS l.root-servers.net. ;; Received 239 bytes from 114.114.114.114#53(114.114.114.114) in 1044 ms #返回给他说找com.,我们可以看到com.也有很多服务器 com. 172800 IN NS l.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. com. 172800 IN NS c.gtld-servers.net. com. 172800 IN NS d.gtld-servers.net. com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS f.gtld-servers.net. com. 172800 IN NS g.gtld-servers.net. com. 172800 IN NS a.gtld-servers.net. com. 172800 IN NS h.gtld-servers.net. com. 172800 IN NS i.gtld-servers.net. com. 172800 IN NS j.gtld-servers.net. com. 172800 IN NS k.gtld-servers.net. com. 172800 IN NS m.gtld-servers.net. com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766 com. 86400 IN RRSIG DS 8 1 86400 20200521170000 20200508160000 48903 . BemkQJ+5wV2uHyc1V/SzRxJKt9GfVupkuDq2TqFY9Kt0tsvaKC6OZp+Y WZuBPZ+qHOU59o3APTBgtBbpDwTH+bXXY rqU3RNutirrwA/Z9RW+J3Bx W771zw5at79UWcZBkq2LxAYW2e3ZVukbQtylm5Wa5TeaBKsfr471dtEP hStNZ1vFrJ7VRt/txo399pn5HIslwuXDDc7LI65Dc8mFxHzjv8f/COQX mOPLESd5QVVd9oatek2lC43ArqI8x6aohLLyXdcSCdm0mVWmaC+4lpzl 3NGwP7GOmRVnuGjFxTZFDPTILYHNTziDPDriEYrNWwGxrHteAA+QB9i4 MdP/kA==;; Received 1173 bytes from 192.203.230.10#53(e.root-servers.net) in 1130 ms #com.然后委托给baidu.com. baidu.com. 172800 IN NS ns2.baidu.com. baidu.com. 172800 IN NS ns3.baidu.com. baidu.com. 172800 IN NS ns4.baidu.com. baidu.com. 172800 IN NS ns1.baidu.com. baidu.com. 172800 IN NS ns7.baidu.com. CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20200513044951 20200506033951 39844 com. DQ9LaY7nv4abiSkEn0gpiP0cQ8J7yqT4l29DPEUyTure4dT/cQOGGhB4 YaB6r/2IAy0Q32WN2JIPrB QZWYFans5vdqZKOE0bT5WIOCK3TFqfmpKy wcaRIcAqloo2ucXB5WSk30r4+ep3DgkfgQyAmgDfJWM0jMEMPxRYhm3l DBVkbvRe4un6nc1i07mz7d1i25O8nmx24r929EcMKPlF4w==HPVU6NQB275TGI2CDHPDMVDOJC9LNG86.com. 86400 IN NSEC3 1 1 0 - HPVVN3Q5E5GOQP2QFE2LEM4SVB9C0SJ6 NS DS RRSIG HPVU6NQB275TGI2CDHPDMVDOJC9LNG86.com. 86400 IN RRSIG NSEC3 8 2 86400 20200514062456 20200507051456 39844 com. jbb8tPp0OWtos9OmH2L4oZme09k8lzfJbCXuPIQWt+YdcO30AKZEBHeB 3iifrujOibMr6Fon32Srtb u4pDgZdVH8mM88RaUpUy15QmBMg5+wUcXB uAx4QXI7XPiaKC6LCEltp813cEo2e/sxI5aK3HtI3ZQGfU+r8CSEGvuU ghdXd0h19TZP5oJWgVobn5O2POHbjz/RSynqNRbjo62m5A==;; Received 761 bytes from 192.43.172.30#53(i.gtld-servers.net) in 709 ms #baidu.com.就找到我们想要的www.baidu.com www.baidu.com. 1200 IN CNAME www.a.shifen.com. a.shifen.com. 1200 IN NS ns5.a.shifen.com. a.shifen.com. 1200 IN NS ns3.a.shifen.com. a.shifen.com. 1200 IN NS ns2.a.shifen.com. a.shifen.com. 1200 IN NS ns1.a.shifen.com. a.shifen.com. 1200 IN NS ns4.a.shifen.com. ;; Received 239 bytes from 14.215.178.80#53(ns4.baidu.com) in 92 ms
(4)、反向解析我们是通过 dig -x IP来解析的
(5)、他还可以模拟完全区域传送
dig -t axfr DOMAIN [@server]
b、host命令
host [-t RR_TYPE] name SERVER_IP
(1)、解析:host -t A www.baidu.com
[root@www /]# host -t A www.baidu.com www.baidu.com is an alias for www.a.shifen.com. www.a.shifen.com has address 36.152.44.95 www.a.shifen.com has address 36.152.44.96
(2)、查看负责域的服务器
[root@www /]# host -t NS www.baidu.com
(3)、查看邮件交换器
[root@www /]# host -t MX baidu.com baidu.com mail is handled by 15 mx.n.shifen.com. baidu.com mail is handled by 20 mx1.baidu.com. baidu.com mail is handled by 20 mx50.baidu.com. baidu.com mail is handled by 10 mx.maillb.baidu.com. baidu.com mail is handled by 20 jpmx.baidu.com.
(4)、反向解析和dig一样
c、nslookup命令:
nslookup [-options] [name] [server]
(1)、交互式模式
nslookup>
server IP:以指定的IP为DNS服务器进行查询,如果不指的话就是本机/etc/resolv.conf下的dns服务器
set q=RR_TYPE:要查询的资源记录类型
name:要查询的名称
[root@www /]# nslookup > server 192.168.10.13 Default server: 192.168.10.13 Address: 192.168.10.13#53 > set q=A > www.sohu.com Server: 192.168.10.13 Address: 192.168.10.13#53 Non-authoritative answer: www.sohu.com canonical name = gs.a.sohu.com. gs.a.sohu.com canonical name = fshyd.a.sohu.com. Name: fshyd.a.sohu.com Address: 120.204.199.149
d、rndc
(1)、rndc status命令
[root@www /]# rndc status version: 9.9.4-RedHat-9.9.4-50.el7 <id:8f9657aa> #dns版本号 CPUs found: 2 #cpu颗数 worker threads: 2 #工作线程 UDP listeners per interface: 2 number of zones: 101 debug level: 0 xfers running: 0 #有没有进行过xfers xfers deferred: 0 soa queries in progress: 0 #正在进行soa查询的个数 query logging is OFF #查询日志功能为关闭 recursive clients: 0/0/1000 #递归查询客户端一共有1000个现在有0个 tcp clients: 0/100 #tcp客户端最多有100个现在有0个 server is up and running
(2)、rndc stop:我们如果使用rndc stop那么就会关闭dns服务
(3)、rndc flush:清空dns服务器缓存,用的很多
(4)、rndc reload:重新加载配置文件,不用重启服务
四、配置解析一个正向区域
1、定义区域
a、在主配置文件中或主配置文件辅助配置文件中实现
(1)、格式
zone "ZONE_NAME" IN {
type {master|slave|hint|forward}; #域类型,master为主服务器,slave为从服务器,hint为根服务器,forward为转发服务器,如果我们负责解析一个域而且此前没有其他任何服务器我们就应该是主服务器
file "ZONE_NAME.zone"; #指明文件在什么地方,如果此处我们使用相对路径那么文件就在我们的/var/named目录下 };
注意:区域名字即为域名
(2)我们来编辑/etc/named.conf,我们可以看到倒数第二行中有内容为
include "/etc/named.rfc1912.zones",这表示是遵循rfc1912规范的各区域的专门定义文件。所以我们在这个文件中添加就可以。
[root@www /]# cat /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 { 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; }; }; zone "wohaoshuai.com" IN { type master; file "wohaoshuai.com.zone"; };
2、建立区域数据文件(主要记录为A或AAAA记录)
a、现在我们来添加我们上述zone中写的wohaoshuai.com.zone这个区域数据库文件,因为是相对路径,因此我们需要在/var/named目录下来添加
(1)、第一段的SOA如下
$TTL 3600
@ IN SOA wohaoshuai.com. dnsadmin.wohaoshuai.com. (
2020050901
1H
10M
3D
1D
)
相应解释:
$TTL 3600:这是全局配置TTL,定义为一个小时,也就是3600秒,下面的资源记录都会继承这个默认的TTL
@:区域名称,可以用@替代,后面的TTL可以不用写,直接在上面的TTL中继承
wohaoshuai.com:区域名字,也可以用@,这儿直接写的区域名字,或者写成当前区域的主DNS服务器的名字也行,比如ns1.wohaoshuai.com.
dnsadmin.wohaoshuai.com.:管理员邮箱地址
2020050901 :序列号
1H :刷新时间
10M :重试时间
3D :过期时间
1D :否定回答的TTL值
(2)、第二段的NS如下
IN NS ns1:这是我们的NS记录,可以发现我们第一字段没写名字,表示和上面的SOA一样,上面SOA中的@表示当前域的域名。后面的这个ns1表示是ns1.wohaoshuai.com.,如果要写全一定要加上后面这个点号,那么我们如果只写ns1的话别人怎么知道你要补什么呢?其实他会自动在ns1后面将我们/etc/named.rfc1912.zones文件中所写的zone中的wohaoshuai.com给你补上,虽然zone中没有这个点,但是他也会自动帮你补上。当然为了确保万无一失我们可以在我们/var/named/wohaoshuai.com.zone中加上$ORIGIN wohaoshuai.com.,表示没写全的都给你自动补一个wohaoshuai.com.,即所有的相对性的名称他就自动给你补上这个后缀了。
(3)、第三段的NS和第二段的NS一样,表示此域中第二个域名服务器为ns2.wohaoshuai.com
(4)、第四段的MX如下:
IN MX 10 mx1 :其中的10为优先级
[root@www /]# cat /var/named/wohaoshuai.com.zone $TTL 3600 $ORIGIN wohaoshuai.com. @ IN SOA wohaoshuai.com. dnsadmin.wohaoshuai.com. ( 2020050901 1H 10M 3D 1D ) IN NS ns1 IN NS ns2 IN MX 10 mx1 IN MX 20 mx2 ns1 IN A 192.168.10.20 ns2 IN A 192.168.10.30 mx1 IN A 192.168.10.40 mx2 IN A 192.168.10.50 www IN A 192.168.10.60 web IN CNAME www bbs IN A 172.16.100.70 bbs IN A 172.16.100.71
b、接下来我们来做语法检查
(1)、检查主配置文件是否有语法错误
[root@www /]# named-checkconf
[root@www /]#
(2)、检查区域文件是否有语法错误
[root@www /]# named-checkzone wohaoshuai.com /var/named/wohaoshuai.com.zone zone wohaoshuai.com/IN: loaded serial 2020050901 OK
3、让服务器重载配置文件和区域数据文件
a、我们首先来看我们的状态
[root@www /]# rndc status version: 9.9.4-RedHat-9.9.4-50.el7 <id:8f9657aa> CPUs found: 2 worker threads: 2 UDP listeners per interface: 2 number of zones: 101 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/0/1000 tcp clients: 0/100 server is up and running
b、我们reload后再查看状态
[root@www /]# rndc reload server reload successful [root@www /]# rndc status version: 9.9.4-RedHat-9.9.4-50.el7 <id:8f9657aa> CPUs found: 2 worker threads: 2 UDP listeners per interface: 2 number of zones: 102 #可以看到我们的zone已经装载进来了 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/0/1000 tcp clients: 0/100 server is up and running
c、我们现在来开始测试
[root@www /]# dig -t A www.wohaoshuai.com @192.168.10.13 ; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> -t A www.wohaoshuai.com @192.168.10.13 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20992 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.wohaoshuai.com. IN A ;; ANSWER SECTION: www.wohaoshuai.com. 3600 IN A 192.168.10.60 ;; AUTHORITY SECTION: wohaoshuai.com. 3600 IN NS ns2.wohaoshuai.com. wohaoshuai.com. 3600 IN NS ns1.wohaoshuai.com. ;; ADDITIONAL SECTION: ns1.wohaoshuai.com. 3600 IN A 192.168.10.20 ns2.wohaoshuai.com. 3600 IN A 192.168.10.30 ;; Query time: 0 msec ;; SERVER: 192.168.10.13#53(192.168.10.13) ;; WHEN: 六 5月 09 14:06:19 CST 2020 ;; MSG SIZE rcvd: 131
可以看到可以解析成功了
4、修改/var/named/wohaoshuai.com.zone文件属性
a、修改其属组为named
[root@www /]# ll /var/named/wohaoshuai.com.zone -rw-r--r-- 1 root named 365 5月 9 12:43 /var/named/wohaoshuai.com.zone
b、让其它用户没有任何权限
[root@www /]# chmod o= /var/named/wohaoshuai.com.zone [root@www /]# ll /var/named/wohaoshuai.com.zone -rw-r----- 1 root named 365 5月 9 12:43 /var/named/wohaoshuai.com.zone
c、再重新加载配置文件即可
[root@www /]# rndc reload
server reload successful
使用systemctl reload named.server也可以
五、配置解析一个反向区域
1、定义区域
a、在主配置文件中或主配置文件辅助配置文件中实现;
zone "ZONE_NAME" IN {
type {master|slave|hint|forward}; #域类型,master为主服务器,slave为从服务器,hint为根服务器,forward为转发服务器,如果我们负责解析一个域而且此前没有其他任何服务器我们就应该是主服务器
file "ZONE_NAME.zone"; #指明文件在什么地方,如果此处我们使用相对路径那么文件就在我们的/var/named目录下 };
b、注意:反向区域的名字
反写的网段地址.in-addr.arpa
10.168.192.in-addr.arpa
2、定义区域解析库文件(主要记录为ptr)
a、如下
[root@www /]# cat /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 { 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; }; }; zone "wohaoshuai.com" IN { type master; file "wohaoshuai.com.zone"; }; zone "10.168.192.in-addr.arpa" IN { type master; file "192.168.100.zone"; };
3、定义区域数据库文件
[root@www /]# cat /var/named/192.168.100.zone $TTL 3600 $ORIGIN 10.168.192.in-addr.arpa. @ IN SOA ns1.wohaoshuai.com. nsadmin.wohaoshuai.com. ( 2020050901 1H 10M 3D 12H ) IN NS ns1.wohaoshuai.com. 20 IN PTR ns1.wohaoshuai.com. 40 IN PTR mx1.wohaoshuai.com. 70 IN PTR bbs.wohaoshuai.com. 71 IN PTR bbs.wohaoshuai.com. 60 IN PTR www.wohaoshuai.com.
4、修改区域数据库文件相应权限
a、修改属组
[root@www /]# chgrp named /var/named/192.168.100.zone [root@www /]# ll /var/named/192.168.100.zone -rw-r--r-- 1 root named 307 5月 9 14:43 /var/named/192.168.100.zone
b、修改权限为其他人没有任何权限
[root@www /]# chmod o= /var/named/192.168.100.zone [root@www /]# ll /var/named/192.168.100.zone -rw-r----- 1 root named 307 5月 9 14:43 /var/named/192.168.100.zone
5、重载配置文件
a、检查语法
[root@www /]# named-checkconf
[root@www /]#
b、检查zone文件
[root@www /]# named-checkzone 10.168.192.in-addr.arpa /var/named/192.168.100.zone zone 10.168.192.in-addr.arpa/IN: loaded serial 2020050901 OK
c、重载配置文件
[root@www /]# rndc reload
server reload successful
6、测试
[root@www /]# dig -x 192.168.10.70 @192.168.10.13 ; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> -x 192.168.10.70 @192.168.10.13 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 771 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;70.10.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 70.10.168.192.in-addr.arpa. 3600 IN PTR bbs.wohaoshuai.com. ;; AUTHORITY SECTION: 10.168.192.in-addr.arpa. 3600 IN NS ns1.wohaoshuai.com. ;; ADDITIONAL SECTION: ns1.wohaoshuai.com. 3600 IN A 192.168.10.20 ;; Query time: 0 msec ;; SERVER: 192.168.10.13#53(192.168.10.13) ;; WHEN: 六 5月 09 14:52:53 CST 2020 ;; MSG SIZE rcvd: 121
可以看到测试成功