一、DNS和bind简介
DNS,Domain Name Service,简称域名服务,BIND(Berkeley Internet Name Domain)是DNS协议的实现,DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。
二、DNS解析过程
(图片来自magedu)
过程解析:当用户通过域名访问一个网站时,现在本地查找HOSTS文件中的解析条目,没有对应的条目,则会查找本地DNS缓存,如果没有此域名的缓存,则会把解析请求发送给电脑中配置的本地DNS服务器(本地DNS服务器必须支持对客户端递归)。本地DNS服务器接到请求后,如果是其直接负责区域内的主机,则会返回权威答案(aa),否则,查看是否有此条目的缓存记录,有则返回非权威解析,没有则将请求发送给根,一层一层迭代请求,直到找到主机所属直接区域的DNS服务器,如果该区域内有此主机,则返回对应的IP给本地DNS,本地DNS再发送给客户端,如果该区域内没有此主机,则查询失败,终止查询过程。
三、相关概念
根域(.)-->一级域(ICCNA)-->二级域(组织域)
一级域:
组织域:.com,.org,.mil,.gov,.edu,
国家域:.cn,.hk,.tw,.jp,.ir,.us,.uk
反向域:.in-addr.arpa
domain:域
zone:区域
namespace:名称空间
FQDN:full queritify domain name,全称域
查询:
递归查询:只发起一次请求,最终能得到答案
迭代:发起一次请求,不一定得到答案
DNS监听端口:
UDP:53 用户客户端查询域名的请求
TCP:53 用于主从DNS间的区域传送
DNS服务器的类型:
主DNS服务器:维护所负责解析的域内解析库服务器;解析库管理维护;
辅助DNS服务器:从主DNS服务器或其它的从DNS服务器那里“复制”(区域传递)一份解析库;
缓存DNS服务器:缓存查询记录
转发服务器:只负责转发请求,不负责查询
资源记录的格式:
name [ttl(缓存时间)] IN 资源记录类型(RRtype) Value
1、SOA
SOA,start of authority,起始授权记录,一个区域文件有且只能有一个SOA记录,且为资源记录的第一条.
name: 只能是区域名称,通常可以简写为@,例如:.
value:有n个数值,最主要的是主DNS服务器的FQDN,点不可省略
例子:
@ 600 IN SOA na.magedu.com. 管理员邮箱(admin.dnsstudy.com.)(
serial number ;序列号注释,十进制数据,不能超过10位,通常使用日期
refresh time ;刷新时间,从服务器从主服务器请求同步解析库的时间间隔
retry time ;重试时间,从服务器到主服务器请求同步解析库失败时,再次尝试的
;时间间隔;应该小于refresh time
expire time ;过期时间,若主服务器在这个时间内仍然无法通信则
netgative answer ttl ; 过期时长:从服务器始终联系不到主服务器时,多久多后放
;弃同步
)
2、NS:NAME Server,名称服务器,可以有多条记录
name:区域名称,通常可以简写为@
value:DNS服务器的FQDN(可以使用相对名称)
例子:
@ 600 IN NS ns
3、A:Address,主机名到IP的正向解析,只能定义在正向区域数据文件中
name:FQDN(可以使用相对名称)
value:IP
例子:
www 600(单位s) IN A 1.2.3.4
www 600(单位s) IN A 1.2.3.5 # 相同FQDN的对应不同的IP时可以做轮询
www 600(单位s) IN A 1.2.3.4
ftp 600(单位s) IN A 1.2.3.4
4、AAAA:主机名到IPv6的正向解析
5、CNAME:cononical NAME,设置别名
name :FQDN
value :FQDN
例子:
ftp IN CHANE www
6、MX:Mail eXchanger,邮件交换服务器,可以有多个
name:区域名称,用于标识smtp服务器
value:包含优先级和FQDN
优先级:0-99,数字越小,级别越高,
例子:
@ 600 IN MX 10 mail
@ 600 IN MX 20 mail2
7、PRT:Pointer,反向域名解析记录,IP 到FQDN,只能定义在反向区域数据文件中,反向区域名称为
逆向网络地址加.in.addr.arpa.后缀组成。
name:IP,逆向的主机地址,例如172.16.100.7的name为7.100,完全格式为7.100.16.172.in-addr-arpa.
value:FQDN
例子:
4.3.2. 600 IN PTR www.test.com.
四、配置文件和工具
主配置文件:定义区域 /etc/named.conf
格式:
options{
//全局选项
}
zone "zone name" {
//定于区域
}
logging{
//日志文件
}
include:加载别的文件
语法检查:
name-checkconf 检查主配置文件
name-checkzone "区域文件" 配置文件
dig 命令:
格式:dig [-t type] [-x addr] name @DNS服务器
选项:+[no]trace [不]适用迭代
+[no]tcp 是否使用tcp
+[no]recurse:是否使用递归
五、DNS配置
1、主从DNS服务器正向以及反向同步设置
主服务器(192.168.52.10)/etc/named.conf 配置:
--------------------------start--------------------------------------------------
acl allow_clients { # 设定允许递归IP的ACL 192.168.52.0/24; 127.0.0.0/8; }; allow-recursion { allow-clients; }; listen-on port 53 { 192.168.52.10; }; # 监听主机IP地址192.168.52.10的DNS端口 //allow-query { localhost;}; # 将此项注释,即允许所有主机查询 allow-recursion { allow-clients; }; # 允许对应ACL中的IP递归,默认yes为允许所有 //include "/etc/named.root.key"; # 将此项注释 /*-----------建立正向区域---------------------*/ zone "ops.com" IN { # 增加区域ops.com type master; # 设置为主区域 file "ops.com.zone"; }; /*-----------建立反向区域---------------------*/ zone "52.168.192.in-addr.arpa" IN { type master; file "192.168.52.ptr.zone"; allow-transfer { 192.168.52.20; };
/*-----------正向区域文件ops.com.zone设置--------*/
[root@Centos6_6-1 ~]# cat /var/named/ops.com.zone $TTL 1D @ IN SOA dns1.ops.com. admin.ops.com. ( 2015091612 8H 15M 7D 1D ) IN NS dns1 IN NS dns2 dns1 IN A 192.168.52.10 dns2 IN A 192.168.52.20 www IN A 192.168.52.10
/*-----------正向区域文件192.168.52.ptr.zone设置---------------------*/
[root@Centos6_6-1 ~]# cat /var/named/192.168.52.ptr.zone $TTL 1D @ IN SOA dns1.ops.com. admin.ops.com. ( 2015091612 8H 15M 1W 1D ) IN NS dns1.ops.com. IN NS dns2.ops.com. IN MX 10 mail.ops.com. 10 IN PTR dns1.ops.com. 20 IN PTR dns2.ops.com. 10 IN PTR www.ops.com. 15 IN PTR mail.ops.com.
# 设置区域文件访问权限
[root@Centos6_6-1 named]# chown :named ops.com.zone [root@Centos6_6-1 named]# chown :named 192.168.52.ptr.zone [root@Centos6_6-1 named]# chmod 640 ops.com.zone 192.168.52.ptr.zone
# 检测区域语法
[root@Centos6_6-1 ~]# named-checkzone ops.com /var/named/ops.com.zone zone ops.com/IN: loaded serial 2015091611 OK
# 检测named配置文件语法
[root@Centos6_6-1 ~]# named-checkconf [root@Centos6_6-1 ~]# service named restart [root@Centos6_6-1 ~]# cat /var/named/ops.com.zone $TTL 1D @ IN SOA dns1.ops.com. admin.ops.com. ( 2015091612 8H 15M 7D 1D ) IN NS dns1 IN NS dns2 IN MX 10 mail dns1 IN A 192.168.52.10 dns2 IN A 192.168.52.20 www IN A 192.168.52.10 mail IN A 192.168.52.15 pop IN CNAME mail
[root@Centos6_6-1 ~]# cat /var/named/192.168.52.ptr.zone $TTL 1D @ IN SOA dns1.ops.com. admin.ops.com. ( 2015091612 8H 15M 7D 1D ) IN NS dns1.ops.com. IN NS dns2.ops.com. IN MX 10 mail.ops.com. 10 IN PTR dns1.ops.com. 20 IN PTR dns2.ops.com. 10 IN PTR www.ops.com. 15 IN PTR mail.ops.com.
--------------------------- end -----------------------------------------------
DNS从服务器(192.168.52.20)配置(配置后需重启服务)
/etc/named.conf :
zone "ops.com" IN { type slave; masters { 192.168.52.10; }; file "slaves/ops.com.zone"; allow-transfer { none; }; }; zone "52.168.192.in-addr.arpa" IN { type slave; masters { 192.168.52.100; }; file "slaves/192.168.52.arpa.zone"; allow-transfer { none; }; };
# 验证
[root@Centos6_6-1 ~]# tail /var/log/messages #查看日志文件 ... Sep 18 23:30:59 Centos6_6-1 named[4445]: zone ops.com/IN: sending notifies (serial 2015091611) Sep 18 23:34:07 Centos6_6-1 named[4445]: client 192.168.52.20#52910: transfer of ‘ops.com/IN‘: AXFR started Sep 18 23:34:07 Centos6_6-1 named[4445]: client 192.168.52.20#52910: transfer of ‘ops.com/IN‘: AXFR ended ... Sep 19 00:54:27 Centos6_6-1 named[4793]: zone ops.com/IN: sending notifies (serial 2015091612) Sep 19 00:56:01 Centos6_6-1 named[4793]: client 192.168.52.20#54891: transfer of ‘52.168.192.in-addr.arpa/IN‘: AXFR started Sep 19 00:56:01 Centos6_6-1 named[4793]: client 192.168.52.20#54891: transfer of ‘52.168.192.in-addr.arpa/IN‘: AXFR ended
[root@Centos6_6-2 ~]# ll /var/named/slaves/ # 文件已经生成,可以用cat查看里面内容 是否和主DNS的是否一致 -rw-r--r--. 1 named named 443 Sep 17 07:05 192.168.52.ptr.zone -rw-r--r--. 1 named named 452 Sep 17 07:09 ops.com.zone
# 用dig工具查询相关RR是否正常
[root@Centos6_6-1 ~]# dig -t NS ops.com @192.168.52.10 ;; QUESTION SECTION: ;ops.com. IN NS ;; ANSWER SECTION: ops.com. 86400 IN NS dns2.ops.com. ops.com. 86400 IN NS dns1.ops.com. ;; ADDITIONAL SECTION: dns1.ops.com. 86400 IN A 192.168.52.10 dns2.ops.com. 86400 IN A 192.168.52.20 [root@Centos6_6-1 ~]# dig -x 192.168.52.10 @192.168.52.10 [root@Centos6_6-1 ~]# dig -t A www.ops.com @192.168.52.20 [root@Centos6_6-1 ~]# dig -t MX ops.com @192.168.52.20
六、子域授权及转发
子域授权:
1、在父域服务器(192.168.52.10)上区域文件/var/named/ops.com.zone添加一下两行:
linux IN NS dns.linux dns.linux IN A 192.168.52.30
2、子域服务器(192.168.52.30)上的配置文件/etc/named.conf
# 新增区域 linux.letitbe.com zone "linux.letitbe.com" IN { type master; file "linux.letitbe.com.zone"; };
# 子域服务器新建对应linux.ops.com.zone 区域文件
[root@Centos6_6-3 ~]# vim /var/named/linux.ops.com.zone $TTL 1D @ IN SOA dns.linux.ops.com. admin.ops.com. ( 2015091610 8H 15M 7D 1D ) IN NS dns dns IN A 192.168.52.30 www IN A 192.168.52.30
[root@Centos6_6-1 named]# chown :named linux.ops.com.zone [root@Centos6_6-1 named]# chmod 640 linux.ops.com.zone [root@Centos6_6-1 ~]# dig -t A www.linux.ops.com@192.168.52.10 ... ;;QUESTION SECTION: ;www.linux.ops.com. IN A ;;ANSWER SECTION: www.linux.ops.com. 86400 IN A 192.168.52.30 ;;AUTHORITY SECTION: linux.ops.com. 86400 IN NS dns.linux.ops.com. ;;ADDITIONAL SECTION: dns.linux.ops.com. 86400 IN A 192.168.52.30
区域转发:
1、子域域名服务器(192.168.52.30)上的配置文件/etc/named.conf
zone "ops.com" IN { # ops.com区域解析请求转发到父域域名服务器192.168.52.10 type forward; forwarders { 192.168.52.10; }; };
[root@Centos6_6-3 ~]# dig -t A www.ops.com @192.168.52.30 # 解析父域的域名验证转发是否成功 ... ;;QUESTION SECTION: ;www.ops.com. IN A ;;ANSWER SECTION: www.ops.com. 86400 IN A 192.168.52.10 ;;AUTHORITY SECTION: ops.com. 86400 IN NS dns1.ops.com. ops.com. 86400 IN NS dns2.ops.com. ;;ADDITIONAL SECTION: dns2.ops.com. 86400 IN A 192.168.52.20 dns1.ops.com. 86400 IN A 192.168.52.10
六、view(视图)
视图可以实现不同的请求返回不同的解析值,这对不同运营商的用户访问web服务器时返回解析IP时有非常重要的作用,由于国情原因,跨运营商访问会出现互联互通问题,而view就可以结合acl实现联通用户访问web服务器可以解析返回联通IP,而电信用户访问返回电信IP。定义view之后,所有的zone都需要放置在view中,此处在/etc/named.rfc1912.zones 文件中定义视图,需要把/etc/named.conf文件中的根zone删除,重新定义到此文件view中,否则会报错。
配置:
[root@localhost named]# cat /etc/named.rfc1912.zones ... acl ct_ip { 192.168.0.0/16; }; # 模拟定义电信IP ACL acl cnc_ip { 172.16.0.0/16; }; # 模拟定义联通IP ACL view telecom { # 模拟定义电信view match-clients { ct_ip; }; # 匹配电信 ACL --------------------------------------------------------------------------------------- zone "." IN zone "localhost.localdomain" IN zone "localhost" IN 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 zone "1.0.0.127.in-addr.arpa" IN zone "0.in-addr.arpa" IN 注意:节省篇幅,里面的value值不列出来。 -------------------------------------------------------------------------------------------------------------------------------------- zone "devops.com." IN { type master; file "devops.com.telecom"; }; }; view unicom { # 模拟定义联通view match-clients { cnc_ip;any; }; # 匹配联通ACL,其他不匹配的也默认以联通视图解析 zone "devops.com." IN { type master; file "devops.com.unicom"; }; };
[root@localhost named]# cat devops.com.telecom # 定义区域telecom的zone文件 $TTL 1D @ IN SOA dns.devops.com. admin.devops.com. ( 2015091612 8H 15M 1W 1D ) IN NS dns dns IN A 192.168.52.100 www IN A 192.168.52.200
[root@localhost named]# cat devops.com.unicom # 定义区域unicom的zone文件d $TTL 1D @ IN SOA dns.devops.com. admin.devops.com. ( 2015091612 8H 15M 1W 1D ) IN NS dns dns IN A 172.16.0.100 www IN A 172.16.0.200
[root@localhost ~]# ifconfig # 实验要求,定义了一个模拟电信段IP:192.168.52.100 #和一个模拟联通段的IP::172.16.0.100 eth0 Link encap:Ethernet HWaddr 00:0C:29:9B:17:8B inet addr:192.168.52.100 Bcast:192.168.52.255 Mask:255.255.255.0 eth0:0 Link encap:Ethernet HWaddr 00:0C:29:9B:17:8B inet addr:172.16.0.100 Bcast:172.16.255.255 Mask:255.255.0.0
验证:
[root@localhost named]# dig -t A www.devops.com @192.168.52.100 # 验证电信用户的访问解析 ;;QUESTION SECTION: ;www.devops.com. IN A ;;ANSWER SECTION: www.devops.com. 86400 IN A 192.168.52.200 # 成功返回了电信IP ;;AUTHORITY SECTION: devops.com. 86400 IN NS dns.devops.com. ;;ADDITIONAL SECTION: dns.devops.com. 86400 IN A 192.168.52.100
[root@localhost named]# dig -t A www.devops.com @172.16.0.100 # 验证联通用户的访问解析 ;;QUESTION SECTION: ;www.devops.com. IN A ;;ANSWER SECTION: www.devops.com. 86400 IN A 172.16.0.200 # 成功返回了联通IP ;;AUTHORITY SECTION: devops.com. 86400 IN NS dns.devops.com. ;; ADDITIONAL SECTION: dns.devops.com. 86400 IN A 172.16.0.100
本文出自 “学习天地” 博客,请务必保留此出处http://letitbe1028.blog.51cto.com/7901525/1698612
原文地址:http://letitbe1028.blog.51cto.com/7901525/1698612