一、DNS简介
DNS(Domain Name System,缩写为DNS)即域名系统,域名系统是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。DNS域名系统的主要组成部分是解析器和域名服务器,服务器有转发服务器和主服务器两种。在同一个网络中,所有主机的IP地址及其对应的域名都被保存在域名服务器中,一个IP地址能对应很多个域名,一个域名则只能对应一个相应的IP地址。因为一个服务器对应一个IP地址,在一台只有一个IP地址的服务器上可以有多个网站,而不同的网站域名是不同的,所以可以有多个域名。
DNS是一种可以将域名和IP地址相互做映射的层次结构的分布式数据库系统,它主要包括了域名空间(domain name space)和资源记录、域名服务器(name server)、解析器(resolver);

DNS系统采用递归查询请求的方式来相应用户的查询,其一般过程如下:
1)客户端首先向首选域名服务器查询;
2)首选域名服务器检查本地资源记录,如果存在则作权威回答,如果不存在,则检查本地缓存,如果有记录则直接返
回结果。若本地资源记录和缓存记录都不存在,则向根域名服务器查询;
3)根域名服务器返回相应顶级域的权威域名服务器的地址,首选域名服务器继续向该顶级权威域名服务器查询;
4)顶级权威域名服务器返回次级域的权威域名服务器地址,首选域名服务器如此迭代查询,直到得到对查询域名的权
威回答,保存在本地缓存中并返回给客户端,完成此次查询;

查询方式:
迭代查询:客户端从本地DNS服务器发出请求后,一直处于等待状态,直到本地名称服务器返回查询结果。
递归查询:客户端和本地DNS服务器的查询就属于递归查询,客户端发出查询请求后处于等待状态,本地DNS以客户端的
身份询问下一个DNS服务器,直到本地DNS服务器返回确定回复或者否定回复。

根域、顶级域、二级域和主机名关系图

全球共有13台DNS根域服务器,顶级域是由Internet名称授权机构管理,两两种常见类型,组织域:.com(商业)、.org(组织)、.edu(教育)、.gov(政府)、.net(通讯)、.mil(军事)、.info(信息);国家或者地区顶级域:cn(中国)、hk(中国香港)、uk(英国)等。
DNS常用术语:
主机名:因特网上的主机或Web站点的名称。主机名映射到IP地址,但是主机名和IP地址之间没有一对一关系。
A记录:代表主机名和IP地址的对应关系,即将名称转换为IP地址,A记录是对一个IPv4地址指定一个域名。
AAAA记录:是对一个IPv6地址与指定的域名转换映射的关系。
RR:资源记录,用来存放与域名相关的数据。每条资源记录都包括域名、生存时间、信息类型、资源记录和值五项。
TTL:生存时间,DNS记录被外部DNS服务器缓存的时间总和,已秒为单位。
CNAME记录:一种特殊的DNS记录,用来创建域名的别名。例如www.aaa.com.cn是aaa.com.cn的别名,也就是用户访
问www.aaa.com.cn将被指向到和aaa.com.cn相同的IP地址。当IP地址发生变化时只需要更新aaa.com.cn的
入口,www.aaa.com.cn会自动指向到正确地地方。
NS记录:域名服务器记录,用来指定由哪个DNS服务器解析域名。
MX记录:邮件交换记录,用来指定由哪台邮件服务器负责接收给定域名网站的邮件,主要对给定域名网站的邮件接收服务
器进行记录。在不止一台邮件服务器的情况下一般由最低优先权(容易获取的)的服务器来接收邮件。
SOA记录:起始授权记录,位于zone文件中的第一条资源记录,提供zone的基本数据(如区域的源名称、作为区域主要信
息源的服务器名称和该区域的其他基本属性等)和更新时间参数。
TXT记录:用来保存域名的附加文本信息。
PTR:代表从IP地址到查找主机名的映射。
二、DNS服务搭建
[root@yang ~]# yum install bind bind-chroot bind-utils -y
//安装服务软件包
[root@yang ~]# rpm -qc bind
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
配置文件介绍:
/etc/named.cof:BIND的主文件,设置一般的name参数,指向该服务器使用的域数据库的信息源。
/var/named/named.ca:根域名配置服务器指向文件,指向根域名配置服务器,用于告诉缓存服务器的初始化。
/var/named/localhost.zone:localhost区正向域名解析文件,用于将本地IP地址(127.0.0.0)转换为本地回送IP地
址(127.0.0.1)
/var/named/name.local:localhost区反向域名解析文件,用于将localhost名字转换为本地回送IP地址(127.0.0.1)
/etc/named.rfc1912.zones:区块设置文件
[root@yang ~]# vim /etc/named.conf
12 options {
13 listen-on port 53 { any; }; //监听的地址改为本机所有地址;
14 listen-on-v6 port 53 { ::1; };
15 directory "/var/named";
16 dump-file "/var/named/data/cache_dump.db";
17 statistics-file "/var/named/data/named_stats.txt";
18 memstatistics-file "/var/named/data/named_mem_stats.txt";
19 recursing-file "/var/named/data/named.recursing";
20 secroots-file "/var/named/data/named.secroots";
21 allow-query { any; }; //接受的查询地址也改为所有地址;
[root@yang ~]# named-checkconf /etc/named.conf //检查配置文件是否有语法错误
[root@yang ~]# systemctl start named //启动named服务
[root@yang ~]# ss -tunlp | grep "53" //查看端口是否监听
udp UNCONN 0 0 192.168.149.151:53 *:* users:(("named",pid=46843,fd=519),("named",pid=46843,fd=518),("named",pid=46843,fd=517),("named",pid=46843,fd=516))
udp UNCONN 0 0 127.0.0.1:53 *:* users:(("named",pid=46843,fd=515),("named",pid=46843,fd=514),("named",pid=46843,fd=513),("named",pid=46843,fd=512))
udp UNCONN 0 0 ::1:53 :::* users:(("named",pid=46843,fd=523),("named",pid=46843,fd=522),("named",pid=46843,fd=521),("named",pid=46843,fd=520))
tcp LISTEN 0 10 192.168.149.151:53 *:* users:(("named",pid=46843,fd=22))
tcp LISTEN 0 10 127.0.0.1:53 *:* users:(("named",pid=46843,fd=21))
tcp LISTEN 0 128 127.0.0.1:953 *:* users:(("named",pid=46843,fd=24))
tcp LISTEN 0 10 ::1:53 :::* users:(("named",pid=46843,fd=23))
tcp LISTEN 0 128 ::1:953 :::* users:(("named",pid=46843,fd=25))
[root@yang ~]# nslookup www.baidu.com //做一下解析测试
Server: 192.168.149.2
Address: 192.168.149.2#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 112.80.248.75
Name: www.a.shifen.com
Address: 112.80.248.76
[root@yang ~]# vim /etc/named.rfc1912.zones //编辑区域注册配置文件
zone "jyy.com" IN { //添加一个jyy.com的域名配置
type master; //设置为主区域
file "jyy.com.zone"; //设置区域文件名称
allow-update { none; }; //设定是否允许自动更新
};
zone "149.168.192.in-addr.arpa" IN { //设置反向解析网段
type master; //设置为主区域
file "149.168.192.zone"; //设置区域文件名称
allow-update { none; }; //设置是否允许自动更新
};
[root@yang ~]# cd /var/named/
[root@yang named]# cp -a named.localhost jyy.com.zone
//正向解析文件。要与named.rfc1912.zone中的file定义的相同
[root@yang named]# cp -a named.loopback 149.168.192.zone
//反向解析文件。要与named.rfc1912.zone中的file定义的相同
[root@yang named]# vim jyy.com.zone
$TTL 1D
@ IN SOA @ admin.jyy.com. ( //起始授权记录及管理员地址
0 ; serial //序列号
1D ; refresh //刷新时间
1H ; retry //重试时间
1W ; expire //过期时间
3H ) ; minimum //否定答案的TTL值
NS www.jyy.com.
www A 192.168.149.151
ns1 A 192.168.149.100
ns2 A 192.168.149.200
bbs A 192.168.149.111
[root@yang named]# vim 149.168.192.zone
$TTL 1D
@ IN SOA @ admin.jyy.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS www.jyy.com.
www A 192.168.149.151
11 PTR aaa.jyy.com.
22 PTR bbb.jyy.com.
[root@yang named]# named-checkzone "jyy.com." jyy.com.zone //检查区域文件语法错误
zone jyy.com/IN: loaded serial 0
OK
[root@yang named]# named-checkzone "jyy.com." 149.168.192.zone
zone jyy.com/IN: loaded serial 0
OK
[root@yang ~]# vim /etc/resolv.conf //编辑本机DNS文件
# Generated by NetworkManager
search localdomain
nameserver 192.168.149.151 //指明DNS服务器地址为本地地址
[root@yang ~]# systemctl restart named //重启服务
======= 测试正向解析 ========
[root@yang ~]# nslookup www.jyy.com
Server: 192.168.149.151
Address: 192.168.149.151#53
Name: www.jyy.com
Address: 192.168.149.151
[root@yang ~]# nslookup ns1.jyy.com
Server: 192.168.149.151
Address: 192.168.149.151#53
Name: ns1.jyy.com
Address: 192.168.149.100
[root@yang ~]# nslookup ns2.jyy.com
Server: 192.168.149.151
Address: 192.168.149.151#53
Name: ns2.jyy.com
Address: 192.168.149.200
[root@yang ~]# nslookup bbs.jyy.com
Server: 192.168.149.151
Address: 192.168.149.151#53
Name: bbs.jyy.com
Address: 192.168.149.111
======= 测试反向解析 ========
[root@yang ~]# nslookup 192.168.149.11
Server: 192.168.149.151
Address: 192.168.149.151#53
11.149.168.192.in-addr.arpa name = aaa.jyy.com.
[root@yang ~]# nslookup 192.168.149.22
Server: 192.168.149.151
Address: 192.168.149.151#53
22.149.168.192.in-addr.arpa name = bbb.jyy.com.
本文详细介绍了DNS系统的工作原理,包括域名系统结构、查询过程、迭代与递归查询的区别,以及根域、顶级域和二级域的关系。同时,列举了DNS常用术语如A记录、AAAA记录、CNAME记录等,并简述了DNS服务的搭建和配置文件。
2141

被折叠的 条评论
为什么被折叠?



