首页 > 代码库 > DNS篇之一基础
DNS篇之一基础
现在,用户打开一个网站页面只需要输入该网站的网址,而很多用户可能并不知道,在Internet发展的早期,只有通过IP地址才能打开需要浏览的网页。如今大多数情况下,登陆各个网站都不需要用到IP地址,而是通过英文网址,甚至只是部分关键字就可以访问特定的网页。实现这一便捷功能的网络服务就是DNS域名解析服务,他实现了IP地址到域名的对应,使用户能够更加方便、快捷的访问Internet网站。
一、DNS服务概述
DNS(Domain Name System,域名系统),实现IP地址à主机名、主机名àIP地址一一对应的一个分布式数据库。DNS协议运行在UDP和TCP协议之上,使用UDP和TCP的53号端口。
DNS查询过程:
客户端发送域名解析请求-->/etc/host.conf文件查看域名解析的搜索顺序-->查找本地hosts文件 -->查找本地 dns cache --> /etc/resolv.conf 查看DNS server位置--> 使用递归的方法-->DNSserver (cache) 搜索--> DNS server通过/var/named/named.ca 用迭代方法解析域名-->解析结果返回客户端。
DNS服务器类型:主DNS服务器、从DNS服务器、缓存服务器、转发服务器、DNS view等
专业名词介绍:
FQDN :Full Qualified Domain Name (完全合格域名)
二、DNS服务安装配置
DNS服务安装:
#yum –y install bind*
查看系统安装好的DNS服务:
# rpm -qa |grep bind
bind-9.8.2-0.17.rc1.el6_4.6.x86_64 (dns服务包)
bind-dyndb-ldap-2.3-5.el6.x86_64(dns黄页包)
bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64(库文件包)
bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64(dns工具包)
bind-chroot-9.8.2-0.17.rc1.el6_4.6.x86_64(dns chroot包)
bind-devel-9.8.2-0.17.rc1.el6_4.6.x86_64(dns 开发环境包)
查看DNS服务配置文件安装位置:
# rpm -ql bind
/etc/named.conf(主配置文件)
/var/named/named.ca()
/var/named/named. localhost.arpa(本机反向解析库文件)
/var/named/named. 172.16.249 .zone(172.16.249正向解析库文件)
/var/named/slaves(从DNS服务配置目录)
DNS服务配置:
1、DNS服务结构:
2、主DNS服务器:
配置文件详解:
// named.conf
// Provided by Red Hat bind package toconfigure the ISC BIND named(8) DNS
// server as a caching only nameserver (asa localhost DNS resolver only).
// See /usr/share/doc/bind*/sample/ forexample named configuration files.
#vim /etc/named.conf
options {
//listen-on port 53 { 127.0.0.1; };
directory "/var/named";
//指定从/var/named目录下读取DNS数据文件
//并创建,指定后所有的DNS数据文件都存放在此目录下
recursion yes;
//是否允许递归查询
logging {
channel default_debug {
file"data/named.run";
severity dynamic;
};
};
//关于日志的定义
zone "." IN {
type hint;
file "named.ca";
};
//指定named从/var/named/named.ca文件中获取internet的根服务器地址
include"/etc/named.rfc1912.zones";
//主配置文件的辅助配置文件
#vim /etc/named.rfc1912.zones
zone "1.0.0.127.in-addr.arpa" IN{
typemaster; //主DNS服务器
file"named.loopback"; //解析库文件为named.loopback
};
//指定127.0.0.1区域的反向解析
zone "localhost" IN {
type master; //主DNS服务器
file "named.localhost"; //解析库文件为named.localhost
};
//指定本地区域的正向解析
解析库资源记录类型详解:SOA、NS、MX、A、AAAA、PTR
格式:name [ttl] IN RRType value
SOA:Start Of Authority启始授权,任何解析库文件的第一个记录的类型必须是SOA
name:区域名称,通常可以简写为@
value:主DNS服务器的FQDN,也可以当前区域的区域名称;
例如:
@ IN SOA ns.whb.com. admin.whb.com. (
serialnumber ;解析库的版本号,例如2014080601
refreshtime ;更新时间间隔
retrytime ;重试时间间隔
expiretime ;过期时间
negativeanswer ttl ;否定答案的统一缓存时长
)
注意:
时间可以使用s(秒)、h(小时)、d(天)、w(周)
NS:name server
name:区域名称
value:DNS服务器的FQDN
例如:@ IN NS ns.whb.com.
注意:
如果有多台NS服务器,每一个都必须有对应的NS记录;
对于正向解析文件来讲,每一个NS的FQDN都应该有一个A记录;
MX:Mail eXchanger
name:区域名称
value:邮件服务器的FQDN
例如:
@ IN MX 10 mail.whb.com.
@ IN MX 20 mail2.whb.com.
注意:
如果有多台MX服务器,每一个都必须有对应的MX记录;但各MX记录还有优先级属性
对于正向解析文件来讲,每一个NS的FQDN都应该有一个A记录;
A: Address
name:FQDN
value:IP
例如:
www.whb.com. IN A 1.1.1.1
www.whb.com. IN A 1.1.1.2
//实现负载均衡
pop3.whb.com. IN A 1.1.1.3
AAAA: ipv6 IP
CNAME: Canonical Name别名
name:FQDN
value:FQDN
例如:
www.whb.com. IN A 1.1.1.5
web.whb.com. IN CNAME www.whb.com.
PTR: pointer
name:逆向的主机IP地址加后缀in-addr.arpa,
例如:172.16.249./16, 网络地址为172.16, 主机地址为100.7,其name为7.100.in-addr.arpa.
value:FQDN
例如:
7.100.in-addr.arpa. IN PTR www.whb.com.
注意:
区域名称为逆向网络地址加.in-addr.arpa做后缀
3、从服务器:从服务器的三个作用:容错、负载、加速(提供容错能力,减轻主DNS服务器的负担,加快查询速度)
1、 到域名注册商那里添加一个NS记录
zone "whb.com" IN {
typeslaves;
file“slaves/named.localhost.zone”
masters {172.16.249.1}
}
父域的区域解析库中
whb.com. IN NS ns.whb.com.
whb.com. IN NS ns2.whb.com.
ns.whb.com. IN A 172.16.249.1
2、编辑本地解析库,配置每个DNS服务器
3、安装从服务器,只配置区域定义即可
4、子域授权:只需要在父域的区域解析库中添加“胶水记录”
格式:
子域名称 IN NS 子域的名称服务器
ops IN NS ns.ops
ops IN NS ns2.ops
ns.ops IN A 172.16.249.7
ns2.ops IN A 172.16.249.8
dev IN NS ns.dev
ns.dev IN A 172.16.100.88
5、配置转发器:转发所有的非本机负责的区域的请求至某指定的DNS服务器
访问控制:
allow-transfer{};
allow-query{};
allow-update{};
递归白名单:
allow-recursion{};
recursionyes;
格式:
options{
...
forwardonly|first;
forwarders{ IP; };
}
配置转发区域:
zone"whb.com" IN {
typeforward;
fowardonly|first;
forwarders{ IP; };
}
6、DNS view: 又称为视图或脑裂(split-brain),根据客户端来源的不同,将同一个名称解析至不同的值;
格式:
acl telecom {
….
};
aclunicom {
…..
};
使用view注意的事项:
1、通常只为内网客户端提供递归功能,提供根区域等;
2、通过只为外网客户端提供本机所负责的区域的解析;
关于DNS中的 acl:
1、内置的ACL:
none,any, local(本机), localnet(本机所在网络)
2、自定义acl:
格式:
acl ACL_NAME {
ip;
ip;
network;
};
例:
acl localnetwork {
172.16.0.0/16;
192.168.0.0/24;
};
allow-recursion{ localnetwork; };
三、DNS工具:
1、检查语法错误工具
#rndc命令:
reload:重读配置文件
reconfig:检查配置文件语法错误
flush:刷新
status:检查DNS状态
#named-checkconf 检查主配置文件语法错误
# named-checkzone检查区域配置文件语法错误
2、客户端测试工具:host、nslookup、dig
host工具
格式:host -tRRType NAME [SERVER]
例如:host -t NSwhb.com 172.16.249.
Nslookup工具:
格式: nslookup>
serverIP:
settype={A|SOA|NS|MX}
name
dig工具:
格式:dig -tTYPE name @server
选项:
+trace路由追踪递归
+notrace不路由追踪递归
+recurse 递归查询
+norecurse不递归查询
-x PTR测试反解
例: dig -tAXFR whb.com @172.16.249.
总结:
当今互联网速度才是王道,网站主页打开时间超过4秒,六成用户将会放弃浏览网站,转向竞争对手网站。所有,DNS服务速度对各门户网站的重要性不言而喻。
本文出自 “gentoo” 博客,请务必保留此出处http://linuxgentoo.blog.51cto.com/7678232/1536569