目录
一, 域名解析服务器的介绍
1, 因特网的域名结构
2, 域名服务器的类型划分
二,DNS 域名解析的过程
三,DNS 解析方式
四,搭建 DNS 服务器
1,使用命令yum install bind -y安装dns软件
2,使用命令rpm -ql bind可以查看软件相关的配置文件
3,使用命令vim /etc/named.conf打开文件
4,使用命令cat /etc/named.rfc1912.zones查看区域的配置
5,查看区域解析文件的配置
五,DNS域名解析实验
实验一:
正向解析
实验二:
逆向解析
实验三:
区域传送,主从同步
一, 域名解析服务器的介绍
DNS(Domain Name System)是互联网上的一项服务,它作为将域名和 IP 地址相
互(双向)映射的一个分布式数据库,能够使人更方便的访问互联网。
DNS 系统使用的是网络的查询,那么自然需要有监听的 port。DNS 使用的是 53
端口,在/etc/services(搜索 domain)这个文件中能看到。通常 DNS 是以 UDP
这个较快速的数据传输协议来查询的,但是没有查询到完整的信息时,就会再次以
TCP 这个协议来重新查询。所以启动 DNS 时,会同时启动 TCP 以及 UDP 的
port53。
1, 因特网的域名结构
由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名
方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名
字,即域名(domain name)。“域”(domain)是名字空间中一个可被管理的划分。
域名只是逻辑概念,并不代表计算机所在的物理地点。域名可分为三大类:
(1)国家顶级域名:采用 ISO3166 的规定。如:cn 代表中国,us 代表美国,uk 代
表英国,等等。国家域名又常记为 ccTLD(country code top-level domains,cc 表示国家代码 contry-code)。
(2)通用顶级域名:最常见的通用顶级域名有 7 个,即:com(公司企 t 业),ne(网
络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国
的军事部门)。
(3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即 arpa,用于反向域名解析,因此称为反向域名。
2, 域名服务器的类型划分
分层管理,一层管理一层,上一层只管下一层
根据域名服务器起的作用,可以把域名服务器划分为以下类型:
(1)根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的
根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。不管是哪一个本地
域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先
求助根域名服务器。所以根域名服务器是最重要的域名服务器。假定所有的根域名
服务器都瘫痪了,那么整个 DNS 系统就无法工作。需要注意的是,在很多情况
下,根域名服务器并不直接把待查询的域名直接解析出 IP 地址,而是告诉本地域
名服务器下一步应当找哪一个顶级域名服务器进行查询。
现如今全球一共投放 13 个根服务器
根服务器主要用来管理互联网的主目录,全世界只有 13 台。1 个为主根服务器,
放置在美国。其余 12 个均为辅根服务器,其中 9 个放置在美国,欧洲 2 个,位于英国和瑞典,亚洲 1 个,位于日本。所有根服务器均由美国政府授权的互联网域名与号码分配机构 ICANN 统一管理,负责全球互联网域名根服务器、域名体系和IP 地址等的管理。 这 13 台根服务器可以指挥 Firefox 或互联网 Explorer 这样的Web 浏览器和电子邮件程序控制互联网通信。换句话说——攻击整个因特网最有力、最直接,也是最致命的方法恐怕就是攻击根域名服务器了。
在与现有 IPv4 根服务器体系架构充分兼容基础上,由我国下一代互联网国家工程
中心领衔发起的“雪人计划”于 2016 年在美国、日本、印度、俄罗斯、德国、法国
等全球 16 个国家完成 25 台 IPv6(互联网协议第六版)根服务器架设,事实上形成了 13 台原有根加 25 台 IPv6 根的新格局,为建立多边、民主、透明的国际互联网治理体系打下坚实基础。中国部署了其中的 4 台,由 1 台主根服务器和 3 台辅根服务器组成,打破了中国过去没有根服务器的困境。
(2)顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
(3)权限域名服务器:负责一个“区”的域名服务器。
(4)本地域名服务器:本地域名服务器不属于域名服务器的层次结构,但是它对
域名系统非常重要。当一个主机发出 DNS 查询请求时,这个查询请求报文就发送
给本地域名服务器。
为了提高域名服务器的可靠性,DNS 域名服务器都把数据复制到几个域名服务器
来保存,其中的一个就是主 DNS 服务器(Master name server),负责解析至少一个域。其他的是辅助(从)DNS 服务器(Slave name server):负责解析至少一个域,是主 DNS 服务器的辅助。当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器
中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
缓存 DNS 服务器:不负责解析域,只是缓存域名解析的结果。
二, DNS 域名解析的过程
1、在浏览器中输入 www . qq .com 域名,操作系统会先检查自己本地的 hosts 文
件是否有这个网址映射关系,如果有,就先调用这个 IP 地址映射,完成域名解
析。2、如果 hosts 里没有这个域名的映射,则查找本地 DNS 解析器缓存,是否有这个
网址映射关系,如果有,直接返回,完成域名解析。
3、如果 hosts 与本地 DNS 解析器缓存都没有相应的网址映射关系,首先会找
TCP/IP 参数中设置的首选 DNS 服务器,在此我们叫它本地 DNS 服务器,此服务
器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果
给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地 DNS 服务器区域解析,但该服务器已缓存了此网
址映射关系,则调用这个 IP 地址映射,完成域名解析,此解析不具有权威性。
5、如果本地 DNS 服务器本地区域文件与缓存解析都失效,则根据本地 DNS 服务
器的设置(是否设置转发器)进行查询,如果未用转发模式,本地 DNS 就把请求
发至 13 台根 DNS,根 DNS 服务器收到请求后会判断这个域名(.com)是谁来授权管
理,并会返回一个负责该顶级域名服务器的一个 IP。本地 DNS 服务器收到 IP 信息
后,将会联系负责.com 域的这台服务器。这台负责.com 域的服务器收到请求后,
如果自己无法解析,它就会找一个管理 qq.com 的 DNS 服务器地址给本地 DNS 服
务器。当本地 DNS 服务器收到这个地址后,就会找 qq.com 域服务器,重复上面
的动作,进行查询,直至找到 www . qq .com 主机。
6、如果用的是转发模式,本地 DNS 服务器就会把请求转发至上一级 DNS 服务
器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根 DNS 或把请
求转至上上级,以此循环。找到最后把结果返回给本地 DNS 服务器,由此 DNS 服
务器再返回给客户机。
注:从客户端到本地 DNS 服务器是属于递归查询,而 DNS 服务器之间使用
的交互查询就是迭代查询。
114.114.114.114 是国内移动、电信和联通通用的 DNS,手机和电脑端都可以使
用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相
对快、稳定,是国内用户上网常用的 DNS。
8.8.8.8 是 GOOGLE 公司提供的 DNS,该地址是全球通用的,相对来说,更适合国
外以及访问国外网站的用户使用。
三,DNS 解析方式
正向解析:将 FQDN----->IP
反向解析:将 IP----->FQDN
FQDN:(Fully Qualified Domain Name)全限定域名:同时带有主机名和域名的名称。(通过符号“.”)
名字 -》 IP -》 正向解析
IP-》名字: 反向解析
在浏览器中输入了一个www.baidu.com, 按Enter键之后发生了什么?
1. DNS解析:IP+Port
2. TCP连接
3. 发送HTTP请求
1. DNS解析
(找到返回Ip,找不到看下一步)
操作者:浏览器
(1-4): 递归查询, (5-8): 迭代查询
递归查询(自己找),迭代查询(别人找)
1)查询浏览器的缓存: 查到了返回IP给浏览器
2)查询操作系统的缓存: ipconfig/displaydns
3)操作系统中/etc/hosts: ip和名字的映射关系
4)访问本地dns服务器,dns服务器给我返回解析后的IP
5)本地域名服务器(114.114....)去访问根域名服务器(.), 根域名服务器不会解析(www.baidu.com),根域名服务器会告诉本地域名服务器:com顶级域名服务器在哪儿(IP)
6)本地域名服务器(114.114....)去访问顶级域名服务器(com), com顶级域名服务器也不会解析(www.baidu.com), 顶级域名服务器会告诉本地域名服务器, baidu二级域名服务器在哪儿(IP)
7)本地域名服务器(114.114....)去访问二级域名服务器(baidu), baidu二级域名服务器也不会解析(www.baidu.com), 二级域名服务器会告诉本地域名服务器,www三级域名服务器在哪儿(ip)
8)本地域名服务器(114.114....)去访问三级域名服务器(www), www三级服务器解析www.baidu.com,如果解析成功了,返回IP给本地域名服务器
本地域名服务器将IP返回给浏览器
四, 搭建 DNS 服务器
提供 DNS 服务的软件叫 bind,服务名是 named。
1,使用命令yum install bind -y安装dns软件
[root@wangjingjing ~]# yum install bind -y
2,使用命令rpm -ql bind可以查看软件相关的配置文件
[root@wangjingjing ~]# rpm -ql bind
(1)/etc: 配置文件
/etc/logrotate.d/named
/etc/named
/etc/named.conf
/etc/named.rfc1912.zones 地域
/etc/named.root.key 秘钥
/etc/rndc.conf (rndc) 远程管理工具
/etc/rndc.key
/etc/rwtab.d/named
/etc/sysconfig/named 系统里面的配置
(2)/var/named/: 工作目录
/var/named
/var/named/data 存放数据
/var/named/dynamic 自动
/var/named/named.ca 预制13台根域名服务器的解析记录
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
/var/named/slaves 存放从根域名服务器同步过来的数据
(3)/var/log/named.log: 日志文件
/var/log/named.log
/etc/named.conf
/etc/named.rfc1912.zones
3,使用命令vim /etc/named.conf打开文件
[root@wangjingjing ~]# vim /etc/named.conf
(1)最后两行
include "/etc/named.rfc1912.zones"; 此文件被引入named.conf文件中 区域的配置
include "/etc/named.root.key"; 秘钥
主配置文件中的区域配置:
zone "." IN { “.”表示的是.这个区域 in 为Internet
type hint; type为类型;类型为hint,根域名的解析
file "named.ca"; 文件,相对路径 存在/var/named/named.ca
};
(2)选项
样例的配置路径:/usr/share/doc/bind*/sample/
acl black{ 访问控制列表 定义的名字(black)
172.16.0.0/16;
192.168.0.12;
192.168.0.18;
};
acl white{ 白名单
10.0.0.0/8;
192.168.0.0/24;
};
options{
allow-query{white;};
blackhole{black;};
}
listen-on port 53 { 127.0.0.1; } ; # 监听:{127.0.0.1} : 可以写ip,也可以写网段,自己定义的白名单或者黑名单
listen-on-v6 port 53 { ::1; }; #ipv6
directory "/var/named"; # 工作目录
dump-file "/var/named/data/cache_dump.db"; # 备份的文件:/var/named/data
statistics-file "/var/named/data/named_stats.txt"; # 统计的文件
memstatistics-file "/var/named/data/named_mem_stats.txt"; # 内存的统计文件
secroots-file "/var/named/data/named.secroots"; # 安全的文件
recursing-file "/var/named/data/named.recursing"; #递归的文件
allow-query { localhost; }; # 允许查询,允许哪些ip来访问服务器
(3)
recursion yes; 允许递归
dnssec-enable yes; 启动dns安全
dnssec-validation yes; 启动dns安全验证
managed-keys-directory "/var/named/dynamic"; 存放秘钥的目录
pid-file "/run/named/named.pid"; 进程pid存放的文件位置
session-keyfile "/run/named/session.key"; 会话秘钥
/* Changes/CryptoPolicy - Fedora Project Wiki */
include "/etc/crypto-policies/back-ends/bind.config"; 加密策略
(4)
logging {
channel default_debug {
file "data/named.run"; debug信息存放的位置
severity dynamic; 级别是自动
};
};
(5)
dns.baidu.com
www.baidu.com
dhcp.baidu.com
mail.baidu.com
ftp.baidu.com
这些dns,www,dhcp,mail,ftp:都是在baidu.com这个域名里的
然后在这个区域中:我们可以去解析这些名称 -> www.baidu.com -> baidu.com -> 去对应dns服务器 -》 解析域名-》IP
file -> 配置的解析记录:dns解析的时候,遵循的规则,主要配置的就是IP和域名的映射关系
4,使用命令cat /etc/named.rfc1912.zones查看区域的配置
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; }; 允许哪些主机来更新dns;allow quire只允许查询,不允许配置
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
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 {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
区域的配置:
zone "openlab.com(域名)" IN {
type master/slave/hint; # 配置三选一:master:主域名服务器,slave: 从域名服务器,hint: 根域名服务器
file "区域解析文件路径";# 文件就是写的解析记录:要把一个域名解析成某一个IP, dns一般都会有缓存,而且从域名和主域名同步的数据的设置
allow-update{IP/网段} ; # 允许哪些主机来更新
};
openlab.com -> FQDN : 正向解析:FQDN解析IP
配置格式:每一块或者每一行内容结束之后要加";"
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
}
.in-addr.arpa: 固定搭配,反向解析即将IP解析域名
5,查看区域解析文件的配置
使用命令vim /var/named/named.localhost随便打开一个文件查看
[root@wangjingjing ~]# vim /var/named/named.localhost
$TTL 1D 第一行
@ IN SOA @ rname.invalid. ( 第二行
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @ 第三行
A 127.0.0.1 第四行
AAAA ::1 第五行
2-5条 IN SOA ; NS ;A;AAAA; :resource record 资源记录
TTL 1D: 缓存时间
资源记录
RR:资源记录的类型
SOA: 起始授权记录: Name: value
第一条记录:
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@: 代表就是:zone "openlab.com" -> @-> openlab.com
IN: internet
SOA: 当前记录是起始授权记录:肯定是区域解析文件的第一条记录
@:代表主域名服务器的域名 -》 openlab.com -> 代表的是主DNS服务器的域名(?)
rname.invalid.: 邮箱地址:xxx@xxx.com ->xxx.xxx.com
下面这个几个字段:主要是配置主从同步数据
0: serial: 序列号, 序列号越大代表这个文件越新
1D: refresh: 主存刷新时间为1天
1H: 重试时间:retry 1小时
1W: expire: 过期时间,重试多久之后不再连接
3H: 最小缓存时间: 如果没有rr记录配置缓存时间,使用3H
缓存时间:$TTL 1D -> 1D -> 86400
518400 -> 6天
第二条记录:
NS: name server -> 对应指定域名要使用DNS服务器的名称(可以有多行)
openlab.com/@/空(相当于使用前一条的@) NS dns.openlab.com. -> openlab.com -》 dns.openlab.com.
第三条记录:
A: 正向解析记录 -》 域名对应的IP
域名 IN A IP
第四条记录:
AAAA: IPV6正向记录
额外条:
1,MX: 邮箱服务器:这个需要单独指定
openlab.com - > mail.openlab.com: user1@openlab.com -> user2@openlab.com -> 中间要经过mail.openlab.com
域名 IN MX number IP: 也是数值如果有多个邮箱服务器,数值越大代表优先级越高
2,CNAME: change NAME: 别名
www.baidu.com -> web.baidu.com
www -> web
新的域名 IN CNAME 老的域名
dhcp.openlab.com(错误) -> dhcp.openlab.com.或者dhcp -> 会帮你主动加上.openlab.com.
dhcp.openlab.com(错误) -> dhcp.openlab.com.openlab.com.
SOA, A,AAAA,NS,MX,CNAME
3,PTR: 反向解析记录:即IP转换成域名
ip IN PTR 域名.
五,DNS域名解析实验
实验一:
正向解析
假设同一家公司RHCE: 搭建一个DNS服务器,并且为公司内部提供域名解析的服务:我们公司的域名:rhce.com
www.rhce.com -> 192.168.206.134(虚拟主机ip)
dhcp.rhce.com -> 192.168.106.111(此ip不需要真实存在)
dns.rhce.com -> 192.168.206.131 (此虚拟机的Ip)
ftp.rhce.com -> 192.168.206.110
ntp.rhce.com -> 192.168.206.112
Mali.rnce.com 192.168.206.115
1,使用命令vim /etc/named.conf编辑配置文件
2,修改:listen-on port 53 { 192.168.233.154; }; 修改成物理网卡的IP
3, allow-query { 192.168.206.0/24; }; 允许哪些主机来访问
4,修改配置区域
# 区域配置
zone "rhce.com" IN {
type master; #只有一台dns,所以为master
file "rhce.zone"; #区域名解析记录文件
};
5,把文件的最后两行注释掉
不需要引入系统配置的区域文件
6,保存退出
7,named.conf -> bind软件给我提供了一个命令来检查配置文件的正确性
[root@wangjingjing ~]# named-checkconf /etc/named.conf
检查完后没有任何输出就是没有语法错误
8,创建区域解析配置文件
区域解析的配置文件应该放在/var/named目录下面
刚新建了一个区域,但是解析文件不存在,需要自己去配置
(1)使用命令cd /var/named目录下面
[root@wangjingjing ~]# cd /var/named
(2)编辑文件 rhce.zone(此文件名必须与刚才在name.conf中的文件名一致)
使用命令vim rhce.zonewq
$TTL 1D
@ IN SOA dns.rhce.com. test.163.com ( #soa记录,用@代替域名 记录类型 @或者dns.rnce.com. 邮箱地址(因为前面的@用过了,用test代替)
0 序列号,新旧程度
1D 刷新时间,从主dns多久刷新一次
1H 重试时间,连接失败,多久尝试一次
1W 过期时间 尝试多久
3H ) 最小缓存时间
Rhce.com IN NS dns.rhce.com. 标记已使用哪一个dns服务器 ;可以有多行
IN MX 10 mail.rhce.com. 邮箱 10表示优先级
dns.rhce.com. IN A 192.168.206.131 解析记录 ;把前面的域名解析为后面的ip
mail.rhce.com. IN A 192.168.206.115
www.rhce.com. IN A 192.168.206.133
;ftp ftp.rhce.com. ;表示注释
;ftp.rhce.com ftp.rhce.com.rhce.com.
ftp IN A 192.168.206.110
dhcp IN A 192.168.206.111
NTP IN A 192.168.206.112
;cname: change name 别名
web IN CNAME www 新 老
(3)wq保存退出,检验区域解析文件语法有无错误
[root@wangjingjing named]# named-checkzone rhce.com /var/named/rhce.zone
区域名 区域文件
9,重新启动named服务
[root@wangjingjing named]# systemctl restart named
10,测试
配置的rhce.zone: dns服务器 -》 解析一个域名www.rhce.com , 谁去解析(DNS服务器)
测试:host FQDN DNS服务器的地址
方法一:
[root@wangjingjing named]# vim /etc/named.conf
[root@wangjingjing named]# host www.rhce.com 192.168.206.131
Using domain server:
Name: 192.168.206.131
Address: 192.168.206.131#53
Aliases:
www.rhce.com has address 192.168.206.133
[root@wangjingjing named]#
方法二:
[root@wangjingjing named]# nslookup www.rhce.com 192.168.206.131
Server: 192.168.206.131
Address: 192.168.206.131#53
Name: www.rhce.com
Address: 192.168.206.133
[root@wangjingjing named]#
方法三:
[root@wangjingjing named]# dig www.rhce.com 192.168.206.131
11,在windows使用自己搭建的dns服务器
在windows 上的vmnet8上修改dns为自己配置的dns服务器
在windows命令行测试
12,linux上测试
第二台机器使用命令 vim /etc/resolv.conf打开文件修改nameserver
2使用1搭建的dns服务
没修改之前,ping不通
修改后:
在vmware上测试
实验二:
逆向解析
1,使用命令vim /etc/named.conf打开文件配置反向解析的区域
zone "206.168.192.in-addr.arpa" IN { 写一个网段.in-addr.arpa: 固定搭配,反向解析即将IP解析域名
type master;
file "206.168.192.zone";
};
2,检查文件有无语法错误
3,配置区域解析文件
使用命令 vim /var/named/206.168.192.zone新建一个逆向解析文件
正向文件
逆向文件
4,检查有无语法错误
5,重启服务
6,测试
实验三:
区域传送,主从同步
rhce.com区域, 区域的解析文件:rhce.zone
type:master -> type: slave
从服务器上不写rhce.zone: 保存同步过来数据文件的目录
1,使用命令yum install bind -y在第二台机器上安装dns软件
[root@kelong ~]# yum install bind -y
2,在主DNS上使用命令vim /etc/named.conf 打开主配置文件
添加 allow-transfer { 192.168.206.0/24; };
3,在从dns上使用命令vim /etc/named.conf打开主配置文件
listen-on port 53 { 192.168.206.132; }; 修改为本地ip
allow-query { 192.168.206.0/24; }; 允许哪些ip来访问
添加区域
zone "rhce.com" IN {
type slave;
masters { 192.168.206.131; };
file "slaves/rhce.zone";
};
4,使用命令systemctl restart named启动主dns和从dns
主
从
5,使用从dns解析www.rhce.com 192.168.206.132(从ip)
同步的配置文件在目录/var/named/slaves/下
不会随着重启而变化,因为我们在:主DNS上面没有配置从DNS的NS记录
用命令vim /var/named/rhce.zone打开主DNS配置文件
添加 IN NS dns1.rhce.com.
Dns1.rhce.com. IN A 192.168.206.132(二台ip)
0变为10
重启服务主,从
查看从配置文件是否同步(更新了,时间变化)
10变为11,看是否会同步;同步了
11改为9,看是否会同步;没有同步
新的会同步,旧的不会同步