一、DNS基本概念
DNS(Domain Name System)域名系统,DNS协议使用了UDP协议和TCP协议,端口号为 53,UDP
53端口用来查询和接受应答,TCP 53端口用于主服务器和从服务器之间的传送。
域的划分:根域:全球13个根服务器,后缀如.com,.net等;根域下来就是顶级域或者叫一级域,一级域之后就是二级域,三级域,如
baidu.com就是一个顶级域名;域名服务器就是能提供域名解析的服务器,上面的记录类型有A(address)记录,NS(name
server),MX(mail),CNAME等;
二、域名解析的方式
递归解析:DNS客户端只是发出原始的域名查询请求报文,然后一直处于等待状态,直到本地域名服务器发来了最终的查询记录。
迭代解析:以本地DNS服务器为中心,本地域名服务器扮演DNS客户端的角色向其他的DNS服务器提出域名解析的请求,每次返回认为可以解析这个查询IP的地址,直到找到该域名的授权服务器。
三、解析过程
1,当用户在浏览器中输入域名www.qq.com后,浏览器会先检查本地缓存中是否
有此域名对应的解析ip(缓存时间有TTL属性来设置),如果有,解析结束;如果没有,浏览器就会查询操作系统缓存中(hosts文件中)是否有域名的
DNS解析,如果hosts文件中没有这个域名的映射,则就会到resolve.conf文件中查看指定的本地DNS服务器;
2,如果本地DNS服务器收到请求,如果在本地资源记录中查到IP的解析结果,则返回解析结果给客户机,解析结束;
3,如果要查询的域名不再本地DNS解析中并且没有转发模式,则本地DNS服务器就向根域服务器发送.com域名解析请求;
4,根域服务器收到请求,向本地服务器返回一个顶级域名服务器的一个IP;
5,本地DNS服务器收到IP信息后,向负责.com域的这台服务器发送www.qq.com的解析请求;
6,如果无法解析,则返回给本地域名服务器一个二级域名(qq.com)解析服务器地址;
7,本地DNS服务器收到地址后,就向该地址发送解析www.qq.com请求,若该域名服务器在自己的资源配置中找到解析,则返回www.qq.com主机的IP;
8,本地域名服务器将www.qq.com主机的ip地址返回给客户机;
四、DNS详细配置过程
实验环境:redhat 6.5
实验主机: 172.25.16.250 实现转发
172.25.16.1
server1
DNS服务器
172.25.16.2
server2
客户端
DNS主配置文件:/etc/named.conf
指定DNS服务器解析地址:/etc/reslov.conf
[[email protected] ~]# yum install bind -y
//安装bind软件包
[[email protected] ~]# rpm -qc bind
//查找bind的配置文件
[[email protected] ~]# rpm -qa | grep
bind
//查看已经安装的软件
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
//客户端工具,用于搜索域名指令,如dig
bind-9.8.2-0.17.rc1.el6_4.6.x86_64
//DNS服务的主程序包
[[email protected] ~]# vim
/etc/named.conf
//修改主配置文件
options {
listen-on port 53 { any;
}; //监听权限改为any,允许任何主机都可以通过TCP
53端口连接此dns服务器
listen-on-v6 port 53 { ::1;
};
directory
"/var/named";
//指定dns工作目录,存放数据资源文件
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
{ any;
};
//允许任何主机访问A记录文件
forwarders { 172.25.16.250;
};
//这条参数后面的ip所在的服务器为备选dns服务器,也就是设置转发功能,当本机无法查询解析到域名,就可以转发到此ip服务器上查询
recursion yes;
dnssec-enable yes;
dnssec-validation
no; //关闭dns安全认证
dnssec-lookaside auto;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN
{
//该zone定义语句定义了dns服务器的根和根记录文件
type hint;
file "named.ca";
};
include
"/etc/named.rfc1912.zones";
//定义子配置文件
include "/etc/named.root.key";
[[email protected] ~]# vim
/etc/named.rfc1912.zones //指定要维护的域qq.com
zone "qq.com" IN {
type master;
file
"test";
//test文件为所要维护的域名中主机与ip的对应关系
allow-update { none; };
};
[[email protected] ~]# cd /var/named
[[email protected] named]# ls
data
named.ca
named.localhost slaves
dynamic named.empty
named.loopback test
[[email protected] named]# cp -p named.localhost
test
//使用模板生成test
[[email protected] named]#vim test
//添加主机与ip对应关系
$TTL 1D
@
IN SOA lijiajing.qq.com. root.qq.com.
(
//SOA表示授权的主机名字
0
; serial
1D
; refresh
1H
; retry
1W
; expire
3H ) ;
minimum
NS
lijiajing.qq.com.
lijiajing
A
172.25.16.1
haha
A
172.25.16.111
aa
A
172.25.16.222
[[email protected] named]# /etc/init.d/named restart
//在客户端指定dns服务器的地址ip
[[email protected] ~]# vim /etc/resolv.conf
nameserver 172.25.16.1
//测试
[[email protected] ~]# dig
haha.qq.com
//或者用 nslookup
haha.qq.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
<<>> haha.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id:
21743
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1,
ADDITIONAL: 1
;; QUESTION SECTION:
;haha.qq.com.
IN A
;; ANSWER SECTION:
haha.qq.com.
86400
IN
A
172.25.16.111
;; AUTHORITY SECTION:
qq.com.
86400
IN
NS
lijiajing.qq.com.
;; ADDITIONAL SECTION:
lijiajing.qq.com.
86400
IN
A
172.25.16.1
;; Query time: 58 msec
;; SERVER: 172.25.16.1#53(172.25.16.1)
;; WHEN: Tue Aug 4 00:10:45 2015
;; MSG SIZE rcvd: 85