目录
1、DNS的自我介绍:
在TCP/IP网络中的设备之间进行通信,是利用和依赖于IP地址实现的。但数字形式的IP地址是很难记(64.233.189.147),而域名形式的地址更加直观和更容易被用户记住(www.baidu.com)。
域名解析:是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务。IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址。域名解析就是域名到IP地址的转换过程。域名的解析工作由DNS服务器完成。
域名解析:也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。
2、DNS服务器类型:
(1)缓存域名服务器:
提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。
(2)主域名服务器:
管理和维护所负责解析的域内解析库的服务器。
(3)从域名服务器:
从主服务器或从服务器"复制"(区域传输)解析库副本。
扩充:
IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,英国1,瑞典1,日本1
IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从
3、DNS查询类型及原理:
(1)递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
(2)迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)
本地名称解析配置文件:hosts
Linux: /etc/hosts
windows: c/windows/system32/drivers/etc/hosts
windows系统查询dns缓存命令:ipconfig /displaydns
windows系统清理dns缓存命令:ipconfig /flushdns
大型、分布式的互联网DNS解析库:
根. 根域名DNS服务器:专门负责根域名;
一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区);
.com(工商 企业) .net(网络供应商) .edu(教育机构) .cn(中国国家域名) .org(团体组织) .gov (*部门)
补充部分域名地址:
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用。
8.8.8.8是GOOGLE公司提供的DNS,该地址全球通用,相对来说,更适合国外以及访问国外网站的用户使用。
223.5.5.5 和 223.6.6.6 是阿里云DNS。
4、正向解析:
区域解析库:由众多资源记录RR(Resource Record)组成;
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX;
SOA:起始授权记录,一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录;
A(internet Address):作用,域名解析成IP地址。
AAAA(FQDN): --> IPV6。
PTR(PoinTeR):反向解析,ip地址解析成域名。
NS(Name Server):专用于标明当前区域的DNS服务器,服务器类型为域名服务器。
CNAME :别名记录。
MX(Mail eXchanger):邮件交换器。
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等;
#固定格式
name [TTL] IN rr_type value
缓存时间 internet记录 区域解析库 值
$TTL 1D
@ IN SOA master.abc.com. admin.abc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.abc.com.
master A 192.168.91.100
www A 192.168.91.103
db A 192.168.91.101
IN MX 10 mail.abc.com.
mail A 192.168.91.10
ftp CNAME www
$TTL 1D #有效解析记录的生存周期
@ in SOA benet.com. admin.benet.com. ( #“@"符号表示当前的DNS区域名
0 ; serial #更新序列号,可以是10位以内的整数
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延时,下载失败后的重试间隔
1W ; expire #失效时间,超过该时间仍无法下载则放弃#
3H) ; minimum #无效解析记录的生存周期,
NS benet.com. #记录当前区域的DNS服务器的名称
A 192.168.80.10 #记录主机IP地址
IN MX 10 mail.benet.com. #MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.80.10 #记录正向解析www.benet.com对应的IP
mail IN A 192.168.80.11 #MX为邮件交换记录,数字越大优先级低
ftp IN CNAME www #CNAME使用别名,ftp 是www的别名
* IN A 192.168.80.100 #泛域名解析,“*"代表任意主机名
5、 Linux网络服务之DNS正反向解析项目实验:
#yum仓库安装bind软件包
[root@localhost ~]#yum install bind bind-utils -y
#关闭防火墙
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
#开启服务
[root@localhost ~]#systemctl start named
#过滤查看一下named
[root@localhost ~]# netstat -natp | grep named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 2136/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 2136/named
tcp6 0 0 ::1:53 :::* LISTEN 2136/named
tcp6 0 0 ::1:953 :::* LISTEN 2136/named
#更改网卡域名DNS地址
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=127.0.0.1
#重启网卡
[root@localhost ~]#systemctl restart network
#查看配置文件包
[root@localhost ~]# 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
#先host一下百度域名地址
[root@localhost ~]# host www.baidu.com
;; connection timed out; no servers could be reached
#修改一下配置
[root@localhost ~]#vim /etc/named.conf
#可以修改配置,注释,或者删除这两行
listen-on port 53 { any; };
allow-query { any; };
# // listen-on port 53 { 127.0.0.1; };
# // allow-query { localhost; };
#重新加载DNS服务
[root@localhost ~]#rndc reload
server reload successful
#再host一下百度域名
[root@localhost ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 180.101.49.11
www.a.shifen.com has address 180.101.49.12
#自己编写域名
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "apple.com" {
type master;
file "apple.com.zone";
allow-update { none; };
};
#再cd到 /var/named目录下
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
#保留权限复制
[root@localhost named]# cp -p named.localhost apple.com.zone
#编辑数据库文件,解析记录对应关系
[root@localhost named]#vim apple.com.zone
$TTL 1D
@ IN SOA master.apple.com. admin.apple.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.apple.com.
master IN A 192.168.59.131
www A 192.168.59.132
MX 10 mail.apple.com.
mail IN A 192.168.59.30
ftp IN CNAME www
* A 192.168.59.132 #代表泛域名
@ A 192.168.59.132 #代表不需要主机名字
#重启一下服务
[root@localhost named]# rndc reload
server reload successful
#客户端1访问服务器编写的域名
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.59.131
[root@localhost ~]# host www.apple.com
www.kgc.com has address 192.168.59.132
www.kgc.com mail is handled by 10 mail.kgc.com.
[root@localhost ~]# host mail.kgc.com
mail.kgc.com has address 192.168.59.30
[root@localhost ~]# host wwwwwwww.kgc.com
wwwwwwww.kgc.com has address 192.168.59.132
[root@localhost ~]# host kgc.com
kgc.com has address 192.168.59.132
#客户端2做http服务实验,测试
#先yum安装httpd软件包
[root@localhost ~]# yum install httpd -y
已安装:
httpd.x86_64 0:2.4.6-97.el7.centos
作为依赖被安装:
apr.x86_64 0:1.4.8-7.el7 apr-util.x86_64 0:1.5.2-6.el7
httpd-tools.x86_64 0:2.4.6-97.el7.centos mailcap.noarch 0:2.1.41-2.el7
完毕!
[root@localhost ~]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# vim index.html
[root@localhost html]# ls
[root@localhost html]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.59.132 netmask 255.255.255.0 broadcast 192.168.59.255
#开启httpd服务
[root@localhost html]# systemctl start httpd
#服务器端或浏览器访问IP地址
[root@localhost named]# curl 192.168.59.132
hello word....
[root@localhost named]# curl www.apple.com
hello word....
DNS反向解析:
#服务器端
#先修改区域配置文件(在文末添加)
zone "59.168.192.in-addr.arpa" IN {
type master;
file "yun.com.zone";
allow-update { none; };
};
#复制正向解析文件
[root@localhost named]# cp apple.com.zone yun.com.zone -p
#编辑文件
[root@localhost named]# vim yun.com.zone
$TTL 1D
@ IN SOA master.yun.com. admin.yun.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.yun.com.
master IN A 192.168.59.131
100 IN PTR www.yun.com.
88 IN PTR db.yun.com.
#重启服务
[root@localhost named]# rndc reload
server reload successful
#客户端进行验证
[root@localhost ~]# host 192.168.59.100
100.59.168.192.in-addr.arpa domain name pointer www.yun.com.
[root@localhost ~]# host 192.168.59.88
88.59.168.192.in-addr.arpa domain name pointer db.yun.com.
总结:
DNS在网络中是非常重要的,各大厂面试题里的常驻选手,大家可以多了解一下域名解析服务的原理及步骤,能够构建主从域名和分离解析域名服务器。