DNS:
域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。
1、因特网的域名结构
由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name),“域”(domain)是名字空间中一个可被管理的划分。
域名只是逻辑概念,并不代表计算机所在的物理地点。分为三大类:
(1)国家顶级域名:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。
(2)通用顶级域名:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
(3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。
现如今全球一共投放13个根服务器
服务器主要用来管理互联网的主目录,全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。 这13台根服务器可以指挥Firefox或互联网 Explorer这样的Web浏览器和电子邮件程序控制互联网通信。换句话说——攻击整个因特网最有力、最直接,也是最致命的方法恐怕就是攻击根域名服务器了。
由于根服务器中有经美国政府批准的260个左右的互联网后缀(如.com、.net等)和一些国家的指定符(如法国的.fr、挪威的.no等),美国政府对其管理拥有很大发言权。
在与现有IPv4根服务器体系架构充分兼容基础上,由下一代互联网国家工程中心牵头发起的“雪人计划”于2016年在美国、日本、印度、俄罗斯、德国、法国等全球16个国家完成25台IPv6(互联网协议第六版)根服务器架设,事实上形成了13台原有根加25台IPv6根的新格局,为建立多边、民主、透明的国际互联网治理体系打下坚实基础。
2 DNS域名解析的过程
客户端发出的查询都是递归查询,DNS服务器向外发出的查询一般都是迭代查询
1.在浏览器中输入www.qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2.如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3.本地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服务器,由上一级服务器进8行解析,上一级服务器如果不能解析,或找根DNS或把请求转至上上级,以此循环。找到最后把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
DNS协议的一种开源实现–bind
提供dns服务的套件叫bind但执行服务名称的是named
我们说DNS是一种协议,而对于每一种协议的实现都需要程序员开发出遵循这种协议规范的软件程序来实现,这里要介绍的BIND就是DNS协议的一种开源实现。据统计,使用bind作为DNS服务器软件的DNS服务器大约占所有DNS服务器的九成。BIND全称为Berkeley Internet Name Domain,因为当今互联网上的通信几乎都必须借助于DNS服务器来解析主机名,得到通信对方的IP地址,而在DNS服务器上最常用的软件就是bind,所以,bind这款软件几乎可以说是当今互联网上常用的软件了。目前bind由ISC.org(Internet Systems Consortium,互联网系统协会)负责开发与维护。
yum install bind -y
rpm -ql bind 查看
bind的相关配置文件
/etc/named.conf 主配置文件
/etc/rndc.conf: 相关配置文件
区域数据文件,需要手动创建
/var/named/zidingyi.zone
配置检查脚本工具
/usr/sbin/named-checkconf
区域配置检查工具
/usr/sbin/named-checkzone
#全球十三个根服务器的相关信息;
/var/named/named.ca 区域文件dns数据库
解析库文件:存放于/var/named/目录下,一般名字为ZONE_NAME.zone
要点:
(1)一台DNS服务器可同时为多个区域提供解析。dns
(2)DNS服务器必须要有根区域解析库文件:named.ca.
(3)DNS服务器还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库,这两个文件分别如下:
①正向解析库文件:/var/named/named.localhost
②反向解析库文件:/var/named/named.loopback
rndc的全称是Remote Name Domain Controller,它可以帮助用户更方便地管理DNS服务器,包括可以检查DNS服务器的状态与统计信息、重载配置文件及zone或单独重载某个区域而不需要重新启动整个DNS服务,还有查看已存在DNS缓存当中的资料等。
配置文件详解:
dns的主配置文件,作为dns的设定档,将我自己的设定档案列出来然后逐部分进行解释。
注意格式:"//" “/* */” ";"结尾
该文件属主root,named用户组
###################################3
#全局选项
options {
#定义监听端口,如果所有地址都监听,则只写端口
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
#定义数据文件目录
directory "/var/named";
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 { localhost; }; #只允许本地主机进行查询
recursion yes; #允许递归
#allow-recursion { 192.168.0.0/16; } ;指定可以递归的范围
dnssec功能会对解析结果进行验证,是否为权威解答,不是就会报错,虽然不影响使用,但是看着不爽
logging { //指定日志记录分类和他们的目标位置
};
zone{ 定义区域,一个zone定义一个区域
type hint;
};
查看named.localhost文件:
[root@www ~]# cat /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 //关键就是这一条记录。
查看named.loopback文件:
[root@www ~]# cat /var/named/named.loopback
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
PTR localhost. //关键就是这一条记录。
DNS. Server 本地 dns
1.yum install bind
2.vim /etc/named.conf
options {
listen-on port 53 { 10.211.55.8; };
directory "/var/named";
};
zone "openlab.com" IN {
type master;
file "named.openlab.com";
};
3.Vim /var/named/named.openlab.com
$TTL 1D
@ IN SOA @ admin.admin.com. (
2019122101
1D
3M
3H
1H )
IN NS dns.openlab.com.
dns IN A 10.211.55.8
www IN A 10.211.55.8
123 IN A 10.211.55.8
ftp IN A 10.211.55.10
5.测试更改客户端主机匹配的dns服务器
Vim /etc/resolv.conf
#Generated by
search localdomain NetworkManager
nameserver 192.168.0.144
测试方式1 : ping www.openlab.com
2:nslookup www.openlab.com
3:dig -t A www.openlab.com
案例一:正向解析
主配置文件 /etc/named.conf
TTL(time to live)生存时间dns记录在dns服务器上的缓存时长。
@域名 IN INTERNET输入标准 起始授权记录 服务器所对应的主域名服务器 管理员邮件以.代替常见的类型的@
如何查看是否解析成功:
Dig -t
#查询NS记录
dig -t NS baidu.com
dig +trace -t A www.linux7.com
dig -t A @SERVERDNS www.linux7.com
#使用nslookup,windows操作系统也可以使用
nslookup;交互式
Nslookup -type=A www.baidu.com
[root@localhost ~]# nslookup -type=A www.baidu.com
案例二: 反向解析
测试:
重启服务正常
区域传送
将一个区域文件复制到多个服务器上的过程叫做区域传送。将主服务器上的信息复制到辅助服务器上来实现。
两种区文件复制方式:
完全区域传送:axfr,all transfer,全部区域文件复制,复制整个区域文件
增量区域传送:ixfr,incremental transfer,仅复制区域里变化的文件
#定义全局,在options选项内定义
allow-transfer { 192.168.75.130; };
IXFR: 增量区域传送
查询上次序列号改变后的信息
dig -t ixfr=1 baidu.com @192.168.75.129
案例三:完全区域传送
在服务器端的主配置文件定义完全区域传送 (主服务)
在另一台虚拟机作为从服务器安装bind软件包:
配置主配置文件/etc/named.conf
#ll /var/named/slaves
[root@localhost slaves]# ll
-rw-r--r--. 1 named named 274 1月 16 22:30 named.192.168.221
-rw-r--r--. 1 named named 336 1月 16 22:30 named.linux7.com
重启服务会动态同步主服务其中的区域数据文件。
案例四:dns从服务的搭建
完全区域传输
增量区域传送
主
在区域文件添加资源记录,修改序列号,ns标记从服务是谁
Systemctl restart named
从
tail -f /var/log/messages
Systemctl restart named
1.修改主服务器的区域配置文件/var/named/named.baidu.com
2.重启主&从服务器的服务
[root@localhost ~]# systemctl restart named
3.查看结果
通过tail -f /var/log/message来查看从服务器的日志,注意传送过程
[root@localhost ~]# tail -f /var/log/messages
Jan 23 16:29:50 localhost named[73533]: reloading configuration succeeded
Jan 23 16:29:50 localhost named[73533]: reloading zones succeeded
Jan 23 16:29:50 localhost named[73533]: zone baidu.com/IN: refresh: failure trying master 192.168.18.132#53 (source 0.0.0.0#0): operation canceled
Jan 23 16:29:50 localhost named[73533]: zone baidu.com/IN: loaded serial 2018012313
Jan 23 16:29:50 localhost named[73533]: zone baidu.com/IN: expired
Jan 23 16:29:50 localhost named[73533]: all zones loaded
Jan 23 16:29:50 localhost named[73533]: running
Jan 23 16:29:50 localhost systemd: Reloaded Berkeley Internet Name Domain (DNS).
Jan 23 16:30:01 localhost systemd: Started Session 48 of user root.
Jan 23 16:30:01 localhost systemd: Starting Session 48 of user root.
案例五:批量解析
批量解析(主服务器:vim /var/named/named.baidu.com)
$GENERATE A-M $.linux7.com. IN A 192.168.221.100
在从服务器上: ping 1.baidu.com
反向格式
$GENERATE 1-10 $ IN PTR $.linux7.com.
配置DNS转发服务器
转发Server
#vim /etc/named.conf
options {
listen-on port 53 { 10.211.55.8; };
forwarders { 10.211.55.11; };
forward only;
};
主dns服务
#vim /etc/named.conf
options {
listen-on port 53 { 10.211.55.11; };
directory "/var/named";
};
zone "baidu.com" IN {
type master;
file "named.baidu.com";
};
[root@client ~]# vim /var/named/named.baidu.com
$TTL 1D
@ IN SOA @ admin.admin.com. (
0
1D
1D
1D
1D )
IN NS dns.baidu.com.
dns IN A 10.211.55.11
haha IN A 10.211.55.11
xixi IN A 10.211.55.11
客户机
Vim /etc/resolv.conf
nameserver 10.211.55.8