上一遍由于篇幅的问题,介绍和配置实例放一块,字数有点超,每次发表,总不成功,没办法,只好分开发表。本篇主要介绍本地DNS服务器的配置,主从服务器配置,泛域名解析,以及一个可远程控制本地DNS服务器的命令rndc。
- 编辑# vim /etc/named.conf配置文件,添加如下内容:
- vim /etc/named.conf
- options {
- directory "/var/named" ;
- };
- zone "." IN {
- type hint;
- file "named.ca";
- };
- zone "localhost" IN {
- type master; #指定主服务器
- file "named.localhost";
- };
- zone "0.0.127.in-addr.arpa" IN {
- type master;
- file "named.loopback";
- };
- zone "langdu.com" IN { #新添加区域
- type master;
- file "langdu.com.zone";
- };
- 以上添加完成后,编辑# vim /var/named/langdu.conf.zone文件,添加如下内容
- $TTL 600 #宏,表示TTL值为600,全局使用,单位默认为秒
- langdu.com. IN SOA ns1.langdu.com. admin.langdu.com. (
- 2013040101
- 1H
- 5M
- 2D
- 6H )
- IN NS ns1 #域名与第一行相同时可不写,表示直接继承上一行的区域名
- IN MX 10 mail # 同上,mail还可以写成mail.langdu.com.
- ns1 IN A 172.16.32.100
- mail IN A 172.16.32.22
- www IN A 172.16.32.21
- www IN A 172.16.32.20
- ftp IN CNAME www
- *.langdu.com. IN A 172.16.32.21 #表示泛域名解析,下边会具体介绍
- named-checkconf #检查配置文件有没有语法错误,下面每次的修改都需要进行检查,下面每次修改后检查命令不在给出,各位在实际操作中一定要检查没有错了在执行下面的命令
- named-checkzone "langdu.com" /var/named/langdu.com.zone #检查区域文件有没有错误
- service named start #以上检查正常后重启服务即可生效
- dig -t A www.langdu.com #使用该命令请求解析www.langdu.com这台主机
- 编辑# vim /etc/named.conf配置文件,添加如下内容:
- zone "32.16.172.in-addr.arpa" IN { #反向区域名
- type master;
- file "172.16.32.zone"; #保存的区域数据文件
- };
- 编辑/var/named/172.16.32.zone输入如下内容:
- $TTL 600
- @ IN SOA ns1.langdu.com. admin.langdu.com. (
- 2013040101
- 1H
- 5M
- 2D
- 6H )
- IN NS ns1.langdu.com.
- 100 IN PTR ns1.langdu.com.
- 22 IN PTR mail.langdu.com.
- 21 IN PTR www.langdu.com.
- 20 IN PTR www.langdu.com.
- #其中@表示直接继承区域名,也可以写成:32.16.172.in-addr.arpa.
- #下面一行前面为空表示自动继承上一行中区域名,当与上一行的去域名相同时可不写,想写的话可写成32.16.172.in-addr.arpa.
- named-checkconf #检查配置文件有没有语法错误
- named-checkzone "32.16.172.in-addr.arpa" /var/named/172.16.32.zone #检查区域文件有没有错误
- service named start #以上检查正常后重启服务即可生效每次修改完成后,都必须执行这三个命令
- dig -t PTR 172.16.32.21 #反向查询172.16.32.21
- dig -t A www.sohu.com @172.16.32.100 #通过该主机去查询www.sohu.com的IP等相关信息,@表示指定通过其后边的主机来查询
- dig +recurse -t A www.sohu.com @172.16.32.100 #该命令与上边的命令得到的结果一样,为了看效果,你也可以换一个网址重新测试下,如换成www.baidu.com的,看得到的结果是否一样
- 现在我可以使用另一个选项norecurse,实现不给www.sohu.com递归查询,命令如下:
- dig +norecurse -t A www.126.com @172.16.32.100 #这里我们换了一个网址,否则在上边的命令执行过后,我们系统上会有缓存,影响我们的结果,你也可以先执行该命令,然后再执行上边的两个命令,这样就可以使用同一个网址了
- dig +norecurse -t A www.126.com @a.gtld-servers.net #为了看效果,我们同样加上norecurse选项
- dig +norecurse -t A www.126.com @ns1.nease.net #通过其本地的域名服务器查询其本地的FQDN解析情况
- dig +trace -t A www.baidu.com @172.16.32.100 #通过本主机追踪查询www.baidu.com的解析过程
- vim /var/named/langdu.com.zone
- $TTL 600
- langdu.com. IN SOA ns1.langdu.com. admin.langdu.com. (
- 2013040101
- 1H
- 5M
- 2D
- 6H )
- IN NS ns1
- IN MX 10 mail
- ns1 IN A 172.16.32.100
- mail IN A 172.16.32.22
- www IN A 172.16.32.20
- www IN A 172.16.32.21
- ftp IN CNAME www
- *.langdu.com. IN A 172.16.32.20 :添加该行信息,即可实现泛域名解析
- 上面修改完成后,接下来的三个命令是什么你懂得!!! 执行完这三个命令我们来查询下。
- dig -t A fin.langdu.com @172.16.32.100 #区域文件中没有fin,使用本主机查询看能否实现泛域名解析
- 在我们的配置文件/etc/named.conf中,在options中有这么一行信息:
- recursion yes; :表示为所有用户提供递归,不管有没有该选项,默认递归是开启的
- 我们可以去掉该选项,设置为谁递归,如可添加下面一行信息:
- options {
- directory "/var/named";
- allow-recursion { 172.16.0.0/16; }; :表示只给该网段的用户提供递归
- };
- 我们使用下面的命令测试一下,想要看到效果。
- dig -t A www.baidu.com @172.16.32.100 #该FQDN不归我们本地的DNS服务器解析,我们使用不同网段的IP看下我们指定的主机能否为我们递归查询
- 同样,我们还可以设置允许为谁查询,如我们添加添加下面一行信息:
- options {
- directory "/var/named";
- allow-query { 172.16.0.0/24; }; :表示仅给该网段的用户提供查询请求
- };
- 在实际的网络中,我们一般很少使用该选项。因为你只允许某些用户来查询,其他用户查询不了,就没法访问了。
- dig -t axfr langdu.com #完全区域传送,可得到该区域内的所有数据
- options {
- directory "/var/named";
- allow-recursion { 172.16.0.0/16; };
- allow-transfer { 172.16.32.10; }; :新添加内容,表示仅允许该主机传送
- };
- 在options选项中添加表示全局使用,我们可以将该选项添加到指定的区域中,表示仅允许传送某一区域的数据。如我们修改我们的配置文件/etc/named.conf里的内容:
- options {
- directory "/var/named";
- allow-recursion { 172.16.0.0/16; }; :表示仅允许该网段的用户递归
- };
- zone "." IN {
- type hint;
- file "named.ca";
- };
- zone "localhost" IN {
- type master;
- file "named.localhost";
- allow-transfer { none; }; :新添加内容,表示不允许任何人传送该区域数据
- };
- zone "0.0.127.in-addr.arpa" IN {
- type master;
- file "named.loopback";
- allow-transfer { none; }; :新添加内容,表示不允许任何人传送该区域数据
- };
- zone "langdu.com" IN {
- type master;
- file "langdu.com.zone";
- allow-transfer { 172.16.32.10; }; :新添加内容,表示仅允许该IP传送该区域数据
- };
- zone "32.16.172.in-addr.arpa" IN {
- type master;
- file "172.16.32.zone";
- };
- dig -t axfr langdu.com
- 可以看到没有任何结果,因为我们本主机IP为172.16.32.100,我们设置的仅172.16.32.20允许传送,所以我们是无法得到该区域的所有数据的。
- 修改从服务器上的配置文件/etc/named.conf:
- vim /etc/named.conf
- options {
- directory "/var/named";
- allow-recursion { 172.16.0.0/16; };
- };
- zone "." IN {
- type hint;
- file "named.ca";
- };
- zone "localhost" IN {
- type master;
- file "named.localhost";
- allow-transfer { none; }; :表示不允许任何人传送
- };
- zone "0.0.127.in-addr.arpa" IN {
- type master;
- file "named.loopback";
- allow-transfer { none; };
- };
- zone "langdu.com" IN {
- type slave; #设定为从服务器
- file "slaves/langdu.com.zone"; #这里是相对路径
- masters { 172.16.32.100; }; #标明主服务器是谁
- allow-transfer { none; };
- };
- zone "32.16.172.in-addr.arpa" IN {
- type slave; #设定为从服务器
- file "slaves/172.16.32.zone"; #这里是相对路径
- masters { 172.16.32.100; }; #标明主服务器是谁
- allow-transfer { none; };
- };
- 默认情况下该配置文件属主属组均为root,这里我们将其属组修改为named。
- 一切工作完成后,记得先检查,无误后重启named服务。这里不再给出命令。
- tail /var/log/messages #查看主服务器上的日志,发现出现如下信息
- Apr 2 18:32:05 liqiang named[6952]: zone 32.16.172.in-addr.arpa/IN: loaded serial 2013040101
- Apr 2 18:32:05 liqiang named[6952]: zone langdu.com/IN: loaded serial 2013040101
- Apr 2 18:32:05 liqiang named[6952]: zone localhost/IN: loaded serial 0
- Apr 2 18:32:05 liqiang named[6952]: running
- Apr 2 18:32:05 liqiang named[6952]: zone 32.16.172.in-addr.arpa/IN: sending notifies (serial 2013040101)
- Apr 2 18:32:05 liqiang named[6952]: zone langdu.com/IN: sending notifies (serial 2013040101)
- Apr 2 18:32:15 liqiang named[6952]: client 172.16.32.10#39300: transfer of '32.16.172.in-addr.arpa/IN': AXFR started #完全区域传送开始
- Apr 2 18:32:15 liqiang named[6952]: client 172.16.32.10#39300: transfer of '32.16.172.in-addr.arpa/IN': AXFR ended #完全区域传送结束
- Apr 2 18:32:16 liqiang named[6952]: client 172.16.32.10#55631: transfer of 'langdu.com/IN': AXFR started #完全区域传送开始
- Apr 2 18:32:16 liqiang named[6952]: client 172.16.32.10#55631: transfer of 'langdu.com/IN': AXFR ended #完全区域传送结束
- tail /var/log/messages #查看从服务器上的日志,出现如下信息
- Mar 30 08:34:31 practice named[15728]: zone 32.16.172.in-addr.arpa/IN: Transfer started.
- Mar 30 08:34:31 practice named[15728]: transfer of '32.16.172.in-addr.arpa/IN' from 172.16.32.100#53: connected using 172.16.32.10#39300
- Mar 30 08:34:31 practice named[15728]: zone 32.16.172.in-addr.arpa/IN: transferred serial 2013040101
- Mar 30 08:34:31 practice named[15728]: transfer of '32.16.172.in-addr.arpa/IN' from 172.16.32.100#53: Transfer completed: 1 messages, 9 records, 259 bytes, 0.071 secs (3647 bytes/sec)
- Mar 30 08:34:31 practice named[15728]: zone 32.16.172.in-addr.arpa/IN: sending notifies (serial 2013040101)
- Mar 30 08:34:32 practice named[15728]: zone langdu.com/IN: Transfer started.
- Mar 30 08:34:32 practice named[15728]: transfer of 'langdu.com/IN' from 172.16.32.100#53: connected using 172.16.32.10#55631
- Mar 30 08:34:32 practice named[15728]: zone langdu.com/IN: transferred serial 2013040101
- Mar 30 08:34:32 practice named[15728]: transfer of 'langdu.com/IN' from 172.16.32.100#53: Transfer completed: 1 messages, 13 records, 299 bytes, 0.045 secs (6644 bytes/sec)
- Mar 30 08:34:32 practice named[15728]: zone langdu.com/IN: sending notifies (serial 2013040101)
- 先修改主服务器上的配置文件:
- vim /etc/named.conf
- options {
- directory "/var/named";
- allow-recursion { 172.16.0.0/16; };
- notify yes; #添加该行,表示有修改时通知从服务器
- };
- 修改主服务器的区域文件,先修改langdu.com.zone:
- vim langdu.com.zone #修改该文件
- $TTL 600
- langdu.com. IN SOA ns1.langdu.com. admin.langdu.com. (
- 2013040102 ;修改后记得将版本号加1
- 1H
- 5M
- 2D
- 6H )
- IN NS ns1
- IN NS ns2
- IN MX 10 mail
- ns1 IN A 172.16.32.100
- ns2 IN A 172.16.32.10
- mail IN A 172.16.32.22
- www IN A 172.16.32.20
- www IN A 172.16.32.21
- ftp IN CNAME www
- now IN A 172.16.32.23 ;添加该行信息
- langdu.com. IN A 172.16.32.21
- *.langdu.com. IN A 172.16.32.20
- 在修改172.16.32.zone
- vim 172.16.32.zone #修改该文件
- $TTL 600
- @ IN SOA ns1.langdu.com. admin.langdu.com. (
- 2013040102 ;修改后记得将版本号加1
- 1H
- 5M
- 2D
- 6H )
- IN NS ns1.langdu.com.
- IN NS ns2.langdu.com.
- 100 IN PTR ns1.langdu.com.
- 10 IN PTR ns2.langdu.com.
- 22 IN PTR mail.langdu.com.
- 21 IN PTR www.langdu.com.
- 20 IN PTR www.langdu.com.
- 23 IN PTR now.langdu.com. #新添加内容
- 修改完成后,检查然后重启服务。
- tail /var/log/messages #查看主服务器的日志
- Apr 2 18:41:39 liqiang named[6952]: reloading configuration succeeded
- Apr 2 18:41:39 liqiang named[6952]: reloading zones succeeded
- Apr 2 18:41:39 liqiang named[6952]: zone 32.16.172.in-addr.arpa/IN: loaded serial 2013040102
- Apr 2 18:41:39 liqiang named[6952]: zone langdu.com/IN: loaded serial 2013040102
- Apr 2 18:41:39 liqiang named[6952]: zone 32.16.172.in-addr.arpa/IN: sending notifies (serial 2013040102) #发送通知,标明新版本号
- Apr 2 18:41:39 liqiang named[6952]: zone langdu.com/IN: sending notifies (serial 2013040102)
- Apr 2 18:41:39 liqiang named[6952]: client 172.16.32.10#52251: transfer of '32.16.172.in-addr.arpa/IN': AXFR-style IXFR started
- Apr 2 18:41:39 liqiang named[6952]: client 172.16.32.10#52251: transfer of '32.16.172.in-addr.arpa/IN': AXFR-style IXFR ended
- Apr 2 18:41:40 liqiang named[6952]: client 172.16.32.10#48890: transfer of 'langdu.com/IN': AXFR-style IXFR started #增量传送开始
- Apr 2 18:41:40 liqiang named[6952]: client 172.16.32.10#48890: transfer of 'langdu.com/IN': AXFR-style IXFR ended #增量传送结束
- cat langdu.com.zone #查看该文件,记住我们当前是处于/var/named/slaves目录下
- $ORIGIN .
- $TTL 600 ; 10 minutes
- langdu.com IN SOA ns1.langdu.com. admin.langdu.com. (
- 2013040102 ; serial
- 3600 ; refresh (1 hour)
- 300 ; retry (5 minutes)
- 172800 ; expire (2 days)
- 21600 ; minimum (6 hours)
- )
- NS ns1.langdu.com.
- NS ns2.langdu.com.
- A 172.16.32.21
- MX 10 mail.langdu.com.
- $ORIGIN langdu.com.
- * A 172.16.32.20
- ftp CNAME www
- mail A 172.16.32.22
- now A 172.16.32.23 ;我们刚才新添加的内容也显示正常
- ns1 A 172.16.32.100
- ns2 A 172.16.32.10
- www A 172.16.32.20
- A 172.16.32.21
- 再来看一下反向区域文件。
- cat 172.16.32.zone
- $ORIGIN .
- $TTL 600 ; 10 minutes
- 32.16.172.in-addr.arpa IN SOA ns1.langdu.com. admin.langdu.com. (
- 2013040102 ; serial
- 3600 ; refresh (1 hour)
- 300 ; retry (5 minutes)
- 172800 ; expire (2 days)
- 21600 ; minimum (6 hours)
- )
- NS ns1.langdu.com.
- NS ns2.langdu.com.
- $ORIGIN 32.16.172.in-addr.arpa.
- 10 PTR ns2.langdu.com.
- 100 PTR ns1.langdu.com.
- 20 PTR www.langdu.com.
- 21 PTR www.langdu.com.
- 22 PTR mail.langdu.com.
- 23 PTR now.langdu.com. ;新加内容
- rndc-confgen > /etc/rndc.conf #表示生成配置文件
- 我们看一下其配置文件的内容:
- cat /etc/rndc.conf
- key "rndc-key" { ;该配置文件生成的密钥文件/etc/rndc.key没有用,可删除,这里我们删除,不用此文件。
- algorithm hmac-md5;
- secret "okzisTdkFy5dOW9QMU1QtQ==";
- };
- options {
- default-key "rndc-key"; ;默认生成的密钥,随机生成,各不相同
- default-server 127.0.0.1; ;默认的服务器IP
- default-port 953; ;默认工作的端口号
- };
- # key "rndc-key" {
- # algorithm hmac-md5;
- # secret "okzisTdkFy5dOW9QMU1QtQ==";
- # };
- #
- # controls {
- # inet 127.0.0.1 port 953
- # allow { 127.0.0.1; } keys { "rndc-key"; };
- # };
- 其中这部分#注释内容需添加到named.conf文件中。
- 先介绍几个选项,待会我们可以使用:
- rndc [-c /etc/rndc.conf] status #可查看服务状态信息
- rndc [-c /etc/rndc.conf] flush #清空缓存
- rndc [-c /etc/rndc.conf] stop #停止服务
- rndc [-c /etc/rndc.conf] notify "ZONE_NAME" #通知该区域
- vim /etc/named.conf #编辑该文件,添加如下内容
- key "rndc-key" {
- algorithm hmac-md5;
- secret "okzisTdkFy5dOW9QMU1QtQ==";
- };
- controls {
- inet 127.0.0.1 port 953
- allow { 127.0.0.1; } keys { "rndc-key"; };
- 检查后重启服务。命令是什么你懂的。不会自己去上边找。
- rndc -c /etc/rndc.conf status #使用该命令查询服务信息,下面是显示的信息
- version: 9.7.0-P2-RedHat-9.7.0-6.P2.el5_7.4 #版本
- CPUs found: 1 #CPU个数
- worker threads: 1 #工作的进程数
- number of zones: 16 #区域个数
- 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 #服务开启,且正在运行
- rndc notify "langdu.com" #指定配置文件可省,这里我们省略,通知langdu.com区域,当某个区域修改时可使用该命令通知从服务器
- rndc flush #表示清空缓存
- rndc stop #停止服务
- netstat -tunlp #可使用该命令查询下,我们的53号端口都已停止
- service named restart #重启服务
- vim /etc/named.conf
- controls {
- inet 172.16.32.100 port 953 ;修改IP地址为DNS服务器的IP
- allow { 172.16.32.10; } keys { "rndc-key"; }; ;设定由哪个主机控制我们的DNS服务器,密钥是多少
- };
- 检查后重启服务。
- netstat -tunlp #可使用该命令查询下,我们的953端口已经开启
- 因我们的远程主机上没有该主机的密钥,要想实现其他主机控制我们的DNS服务器,我们指定的主机需也有该主机的rndc.conf文件才行。
- scp /etc/rndc.conf 172.16.32.10:/root/ #将本主机的rndc.conf文件传送到我们的远程主机上,并保存到/root目录下
- rndc -c /etc/rndc.conf status #使用该命令查询远程主机的服务信息,因为我们两个主机的时间没有同步,所以会报错