简介
DNS(Domain Name System,域名解析系统)
DNS 服务可以为用户提供域名和IP地址之间的自动转换,通过DNS服务,用户可只需要输入机器的域名即可访问相关的服务,而无需使用那些难以记忆 的IP地址。
DNS 域名结构
DNS域名又称为DNS命名空间,它是以层次树状结构进行管理的,其最顶层是根域。根域是整个DNS命名空间中是唯一的,而根域下可以分多个子域,每一个子域下又可以有多个子域。
一个完整的域名由顶级(根)域以及各子域的名称组成,各部分之间用句号.来分隔,其中最后一个.为顶级域
FQDN: Full Qualified Domain Name 完整主机名 (主机名+域名)
例:www.51cto.com www是主机名;51cto.com是域名
名称解析:主机名解析
把一种名称转换为另一种名称的过程
名称:字串、数字
解析库:某种存储
username <--> uid
某种存储:
文本文件
关系型数据库
LDAP:Lightweight Directory Access Protocol, 389/tcp
解析:根所用户所提供一种名称,去查询解析库,以得到另一种名称
DNS工作原理/解析过程
1)、如在浏览器中输入www.51cto.com域名,操作系统会先检查自己本地的hosts文件是否有这个域名映射关系,如果有,就直接访问与之匹配IP,完成域名解析。
2)、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3)、否则,首先会找resole.conf文件中设置的DNS服务器,此服务器收到解析请求时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析。
4)、如果要查询的域名,不由本地DNS服务器区域解析,但该DNS服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5)、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(没有设置转发器)进行查询,
如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,
并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责 .com域的这台服务器。
这台负责 .com域的服务器收到请求后,如果自己无法解析,它就会找一个管理 .com域的下一级DNS服务器地址(51cto.com)给本地DNS服务器。
当本地DNS服务器收到这个地址后,就会找51cto.com域服务器,重复上面的动作进行查询,直至找到www.51ctom.com主机。
6)、如果用的是转发模式(设置转发器),此DNS服务器就会把请求转发至上一级ISP DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
注:从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是迭代查询。
端口
53/udp, 53/tcp (在主从的时候用tcp,解析的时候用udp)
DNS服务器类型:
主DNS服务器
从DNS服务器
缓存服务器
转发服务器
区域解析库:
资源记录:rr(resource record)
有类型的概念:用于此记录解析的属性
SOA: Start Of Authority, 起始授权记录,一个区域文件只能有一个;
NS:Name Server
MX: Mail eXchange, 邮件交换器,MX记录有优先级属性(0-99);
A:FQDN --> IP,专用于正向解析库
PTR: IP --> FQDN,专用于反向解析库
AAAA:FQDN --> IPv6,专用于正向解析库
CNAME: Canonical Name,正式名称
资源记录类型:
name [ttl] IN RRType value
任何解析库文件的第一个记录的类型必须是SOA
SOA:Start Of Authority
name: 区域名称,通常可以简写为@
value: 主DNS服务器的FQDN,也可以当前区域的区域名称;
例如:@ IN SOA ns.magedu.com. admin.magedu.com. (
serial number ;解析库的版本号,例如2014080401
refresh time ;周期性同步的时间间隔
retry time ;重试的时间间隔
expire time ;过期时长
negative answer ttl ;否定答案的统一缓存时长
)
NS:name server
name: 区域名称
value: DNS服务器的FQDN
例如:@ IN NS ns.magedu.com.
注意:
如果有多台NS服务器,每一个都必须有对应的NS记录;
对于正向解析文件来讲,每一个NS的FQDN都应该有一个A记录;
MX:Mail eXchanger
name: 区域名称
value: 邮件服务器的FQDN
例如:
@ IN MX 10 mail.magedu.com.
@ IN MX 20 mail2.magedu.com.
注意:
如果有多台MX服务器,每一个都必须有对应的MX记录;但各MX记录还有优先级属性
对于正向解析文件来讲,每一个NS的FQDN都应该有一个A记录;
A: Address
name: FQDN
value: IP
例如:
www.magedu.com. IN A 1.1.1.1
AAAA: ipv6 IP
CNAME: Canonical Name
name: FQDN
value: FQDN
例如:
www.magedu.com. IN A 1.1.1.5
web.magedu.com. IN CNAME www.magedu.com.
PTR: pointer
name: 逆向的主机IP地址加后缀in-addr.arpa,例如172.16.100.7/16, 网络地址为172.16, 主机地址为100.7,其name为7.100.in-addr.arpa.
value: FQDN
例如:
7.100.in-addr.arpa. IN PTR www.magedu.com.
bind配置文件
named.conf 是bind的主配置文件:
named.conf 配置文件是由配置语句和注释组成。每条配置语句以分号;做为结束符,多条配置语句组成一个语句块;注释语句使用两个左斜杠//作为注释符。
服务脚本:/etc/rc.d/init.d/named
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones
区域解析库文件:/var/named/zone_name.zone
注意:
1、首先要注册域名,国内需要备案:
代理商: net.cn (万网), godaddy.com(国外,淘宝有代理)
2、泛域名解析
安装配置过程:
关闭防火墙;关闭Selinux ;CentOS6.5_x86.64;DNS1:192.168.1.19;DNS2:192.168.1.18
1、安装程序包
yum install bind.x86_64 -y # bind的主程序
yum bind-utils.x86_64 -y # 客户端的命令工具包
yum bind-libs.x86_64 -y # 给bind与相关指令使用的函数库
本文基于rpm包安装,配置文件会自动生成,如果编译安装的话,所有的配置文件都需要手动编写。
2、修改主配置文件named.conf:
定义区域
options {
directory "/var/named";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
3、为每一个区域提供解析库
变量的定义
资源记录
1 tail -10 /etc/named.rfc1912.zones 2 zone "luo.com" IN { 3 type master; 4 file "luo.com.zone"; 5 }; 6 7 zone "1.168.192.in-addr.arpa" IN { 8 type master; 9 file "192.168.1.zone"; 10 };
1 # cat /var/named/luo.com.zone 2 $TTL 3600 3 @ IN SOA ns.luo.com. admin.luo.com. ( 4 2014080601 ; serial 5 2H ; refresh 6 10M ; retry 7 6D ; expire 8 7H ) ; minimum 9 IN NS ns 10 IN NS ns2 11 IN MX 10 mail 12 ns IN A 192.168.1.19 13 ns2 IN A 192.168.1.18 14 mail IN A 192.168.1.20 15 www IN A 192.168.1.21 16 ftp IN A 192.168.1.22 17 web IN CNAME www
1 cat /var/named/192.168.1.zone 2 $TTL 3600 3 @ IN SOA ns.luo.com. admin.luo.com. ( 4 2014080601 ; serial 5 2H ; refresh 6 10M ; retry 7 6D ; expire 8 7H ) ; minimum 9 IN NS ns.luo.com. 10 IN NS ns2.luo.com. 11 18 IN PTR ns2.luo.com. 12 19 IN PTR ns.luo.com. 13 20 IN PTR mail.luo.com. 14 21 IN PTR www.luo.com. 15 22 IN PTR web.luo.com.
修改文件属性及检查语法
# chown root:named luo.com.zone 192.168.1.zone
# chmod 640 luo.com.zone 192.168.1.zone
# named-checkconf 检查主配置文件
# service named configtest 检查配置文件
# rndc reload 重新载入配置文件
测试服务
客户端测试工具使用:
1、host -t RRType NAME [SERVER]
例如:host -t NS mageedu.com 172.16.100.7
2、nslookup 交互式查询互联网名称服务器,在windows上面也可以使用
# nslookup>
server IP:
set type={A|SOA|NS|MX}
name
3、dig DNS查询工具
dig -t TYPE name @server
类型可使用:AXFR
例如: dig -t AXFR mageedu.com @172.16.100.7
dig -t 资源记录类型 名称 [@dns_server_ip] 正解
dig -x IP 反向解析
dig +trace 显示全部解析的追踪过程
dig -t axfr yh.com 对yh.com域进行完全区域传送
dig -t NS yh.com 查询yh.com的NS记录
dig -t NS . @[a-m].root-servers.net. 查询根域名称服务器(13个根节点),a~m字母都可以。
4、rndc:
Remote Name Domain Contoller,远程名称控制器
选项:
reload 重新载入配置文件和区域资源记录文件
reconfig 只重读配置文件
stats 显示区域状态信息
stop 停止工作
flush 清空DNS缓存
querylog 打开查询日志,在使用service named restart就会被关闭,包括调试级别。
trace 多次重复执行此命令,依次增加调试级别,
notrace 关闭调试
trace LEVEL 直接跟上调试级别,0表示关闭,1,2,3表示最高
DNS主从同步:
1、时间同步;
ntp: network time protocol
ntpdate NTP_SERVER
crontab:
*/3 * * * * /sbin/ntpdate 172.16.0.1 &> /dev/null
2、bind版本差异
二者相同
主低、从高
定义一个从区域:
zone "ZONE_NAME" IN {
type slave;
file "slaves/ZONE_NAME.zone";
masters { 172.16.100.7; };
};
添加一个从服务器:
1、到域名注册商那里添加一个NS记录
父域的区域解析库中
mageedu.com. IN NS ns.mageedu.com.
mageedu.com. IN NS ns2.mageedu.com.
ns.mageedu.com. IN A
2、编辑本地解析库,配置每个DNS服务器
3、安装从服务器,只配置区域定义即可
区域传送的限制功能:
主、从
bind: 有内置的ACL
none: 所有都不
any: 任意
localhost: 本机
allow-transfer { ip; ip; ip; ... };
实例:
主DNS服务器的区域配置:
1 cat /etc/named.rfc1912.zones 2 3 acl localnet { 4 192.168.1.0/24; 5 172.16.0.0/16; 6 }; 7 zone "luo.com" IN { 8 type master; 9 file "luo.com.zone"; 10 allow-transfer { localnet; }; 11 };12 13 zone "1.168.192.in-addr.arpa" IN { 14 type master; 15 file "192.168.1.zone"; 16 };
从DNS服务器
# yum install bind
# service named start
修改 目录权限
从DNS服务器的区域配置:
1 # tail /etc/named.rfc1912.zones 2 zone "luo.com" IN { 3 type slave; 4 file "slaves/luo.com.zone"; 5 masters { 192.168.1.19; }; 6 }; 7 8 zone "1.168.192.in-addr.arpa" In { 9 type slave; 10 file "slave/192.168.1"; 11 masters { 192.168.1.19; }; 12 };
测试
1 # dig -t axfr "luo.com" @192.168.1.19 2 3 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t axfr luo.com @192.168.1.19 4 ;; global options: +cmd 5 luo.com. 3600 IN SOA ns.luo.com. admin.luo.com. 2014080601 7200 600 518400 25200 6 luo.com. 3600 IN NS ns.luo.com. 7 luo.com. 3600 IN NS ns2.luo.com. 8 luo.com. 3600 IN MX 10 mail.luo.com. 9 ftp.luo.com. 3600 IN A 192.168.1.22 10 mail.luo.com. 3600 IN A 192.168.1.20 11 ns.luo.com. 3600 IN A 192.168.1.19 12 ns2.luo.com. 3600 IN A 192.168.1.18 13 web.luo.com. 3600 IN CNAME www.luo.com. 14 www.luo.com. 3600 IN A 192.168.1.21 15 luo.com. 3600 IN SOA ns.luo.com. admin.luo.com. 2014080601 7200 600 518400 25200 16 ;; Query time: 2 msec 17 ;; SERVER: 192.168.1.19#53(192.168.1.19) 18 ;; WHEN: Thu Aug 7 02:35:20 2014 19 ;; XFR size: 11 records (messages 1, bytes 265)
后续更新