域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成(此处以IPv4的地址为例,IPv6的地址同理),记起来总是不如名字那么方便,所以,就
采用了域名系统来管理名字和IP的对应关系。
本地名称解析配置文件:hosts
Linux: /etc/hosts
windows: c/windows/system32/drivers/etc/hosts
#格式
IP 地址 域名
[root@localhost ~]#vim /etc/nsswitch.conf
#修改dns的优先级
hosts: files dns myhostname
#修改 files和 dns的先后 优先级就会改变
[root@localhost ~]# grep name /etc/services
### 过滤出端口
# service-name port/protocol [aliases ...] [# comment]
nameserver 42/tcp name # IEN 116
nameserver 42/udp name # IEN 116
nicname 43/tcp whois
nicname 43/udp whois
domain 53/tcp # name-domain server
hostname 101/tcp hostnames # usually from sri-nic
hostname 101/udp hostnames # usually from sri-nic
csnet-ns 105/tcp cso # also used by CSO name server
at-nbp 202/tcp # AppleTalk name binding
#>Ports are used in the TCP [RFC793] to name the ends of logical
# Gracilis Packeten remote config server. The official name is listed as
# the primary name, with the unregistered name as an alias.
# being registred. The primary names are the registered names, and the
# unregistered names used by zebra are listed as aliases.
# This port is registered as wnn6, but also used under the unregistered name
swat 901/tcp smpnameres # Samba Web Administration Tool
ptcnameservice 597/tcp # PTC Name Service
ptcnameservice 597/udp # PTC Name Service
smpnameres 901/udp # SMPNAMERES
oraclenames 1575/tcp # oraclenames
oraclenames 1575/udp # oraclenames
enl-name 1805/tcp # ENL-Name
enl-name 1805/udp # ENL-Name
linkname 1903/tcp # Local Link Name Resolution
linkname 1903/udp # Local Link Name Resolution
bcinameservice 3415/tcp # BCI Name Service
bcinameservice 3415/udp # BCI Name Service
namemunge 3950/tcp # Name Munging
namemunge 3950/udp # Name Munging
fmpro-internal 5003/udp # FileMaker, Inc. - Proprietary name binding
ub-dns-control 8953/tcp # unbound dns nameserver control
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,
但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定
其他 DNS 服务器作为解析来源。
主域名服务器:管理和维护所负责解析的域内解析库的服务器
从域名服务器
从主服务器或从服务器"复制"(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
IPv4的根名称服务器:全球共13个负责解析根域的DNS服务器,美国10个,英国1,瑞典1,日本1
IPv6的根名称服务器:全球共25个,中国1主3从,美国1主2从
递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对
方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需 要发起多次查询。(需要自己动手)
正向解析查询过程:
①先查本机的缓存记录
②查询hosts文件
③查询dns域名服务器,交给dns域名服务器处理
以上过程成为递归查询:我要一个答案你直接会给我结果
④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
windows系统查询dns缓存命令:ipconfig /displaydns
windows系统清理dns缓存命令:ipconfig /flushdns
linux清dns缓存需要安装nscd软件,启动、执行nscd -i hosts
======DNS的分布式互联网解析库=====
大型、分布式的互联网DNS解析库
根. 根域名DNS服务器:专门负责根域名
一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区)
.com(工商 企业)
.net(网络供应商)
.edu(教育机构)
.cn(中国国家域名)
.org(团体组织)
.gov (政府部门)
二级DNS服务器:专门负责二级域名的解析
.net.cn
.edu.cn
.com.cn
子域名DNS服务器:专门负责子域名的解析 也称为三级域名
ina.com.cn
.pku.edu.cn
主机站点
tts9
tts6
mail
www
域名代理/注册/购买服务商
-新网,www.xinnet.com
-万网,www.net.cn
-中国互联,hulian.top
中国数据
域名体系结构
所有的域名必须以点结尾
www.qq.com. www.baidu.com
根域名(.)
一级域名:.cn(中国) .us .tw .kr(韩国) .jp(日本) .hk(香港)uk(英国) …
二级域名:.com.cn(中国商业组织) edu.cn(教育机构) .org.cn(非盈利) .net.cn(中国运营商)
三级域名:sina.com.cn nb.com.cn haixi.com.cn …
组织域:.com .org .net .CC
国家域:.cn .tw(台湾) .hk(香港) .iq .ir .jp(日本)
区域解析库:由众多资源记录RR(Resource Record)组成
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解
析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。
A(internet Address):作用,域名解析成IP地址
AAAA(FQDN): --> IPV6
PTR(PoinTeR):反向解析,ip地址解析成域名
NS(Name Server):,专用于标明当前区域的DNS服务器,服务器类型为域名服务器
CNAME : Canonical Name,别名记录
MX(Mail eXchanger)邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮
件)记录,https验证等
SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。
name: 当前区域的名字,例如"wlw.com."
value: 有多部分组成
注意:
当前区域的主DNS服务器的正向解析,也可以使用当前区域的名字
当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换
例如:admin.wlw.com
主从服务区域传输相关定义以及否定的答案的统一的TTL
范例:
$TTL 1D
@ IN SOA master.wlw.com. admin.wlw.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如: ns.kgc.org.
注意:
相邻的两个资源记录的name相同时,后续的可省略
对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
一个区域可以有多个NS记录
范例:
master IN NS wlw.com.
master IN NS wlw.com.
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
注意:
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的
优先级;数字越小优先级越高
对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
范例:
mail IN MX 10 mx1.wlw.org.
IN MX 20 mx2.wlw.org.
mx1 A 192.168.59.10
mx2 A 192.168.59.10
name: 某主机的域名解析,例如:www.wlw.com
value:主机名对应主机的IP地址
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
范例:
www.wlw.com. IN A 1.1.1.1
www.wlw.com. IN A 2.2.2.2
www.wlw.com. IN A 3.3.3.3
www.wlw.com. IN A 4.4.4.4
* IN A 5.5.5.5
#代表泛域名
@ IN A 6.6.6.6
#代表不需要名字
name: IP,有特定格式,把IP地址反过来写,192.168.59.100,要写作100.59.168.192;而有特定后缀:in-addr.arpa.,所以完整写法为:100.59.168.192.in-addr.arpa. value: FQDN
name: 别名的FQDN value: 真正名字的FQDN
ftp.wlw.com. IN CNAME www.wlw.com
**1.安装主软件和配置包管理软件**
[root@localhost ~]# yum install bind bind-utils -y
**2.关闭防火墙**
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]#setenforce 0
**3.开启服务并查看是否查看成功**
[root@localhost ~]#systemctl start named
[root@localhost ~]#netstat -ntap |grep named
**4.修改网卡的DNS服务地址并重启网卡**
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=127.0.0.1
[root@localhost ~]#systemctl restart network
[root@localhost ~]# cat /etc/resolv.conf
**5.ping测试,看是否可以解析出百度的ip**
[root@localhost ~]# ping www.baidu.com
**6.修改配置文件/etc/named.conf**
[root@localhost ~]#rpm -qc bind 查询安装服务的配置文件
[root@localhost ~]#vim /etc/named.conf 进入修改配置文件
#可以修改配置,注释,或者删除这两行
listen-on port 53 { any; };
allow-query { any; };
**7.重新加载DNS服务**
[root@localhost ~]#rndc reload(也可以实验systemctl restart named)
server reload successful
**8.ping测试,看是否可以解析出百度的ip**
[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
**9.编写域名,在配置文件/etc/named.rfc1912.zones下 **
[root@localhost named]#vim /etc/named.rfc1912.zones
zone "wlw.com" {
type master;
file "wlw.com.zone";
};
**10.切换至named文件夹,拷贝named.localhost变成根域名文件**
[root@localhost named]# cd /var/named/
[root@localhost named]# cp -p named.localhost ./wlw.come.zone
**11.修改成根域名文件**
[root@localhost named]# vim wlw.come.zone
$TTL 1D
@ IN SOA master.wlw.com. admin.wlw.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.wlw.com.
master IN A 192.168.59.100
www IN A 192.168.91.20
MX 10 mail1.wlw.com.
MX 20 mail2.wlw.com.
mail1 IN A 192.168.59.28
mail2 IN A 192.168.59.30
ftp IN CNAME www
*IN A 192.168.59.10 泛指域名解析:
**12.重新加载DNS服务并测试**
[root@localhost named]# rndc reload 重新加载DNS服务
测试:
[root@localhost named]# host mail1.wlw.com 测试
#先修改区域配置文件
[root@localhost named]#vim /etc/named.rfc1912.zones
zone "59.168.192.in-addr.arpa" IN {
type master;
file "yxp.com.zone";
allow-update { none; };
};
[root@localhost named]#cp -p kgc.com.zone ky15.com.zone
#复制正向解析文件
[root@localhost named]# cp -p wlw.com.zone yxp.com.zone
#修改配置文件
[root@localhost named]# vim yxp.com.zone
$TTL 1D
@ IN SOA master.yxp.com admin.yxp.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.yxp.com.
master IN A 192.168.59.100
100 IN PTR www.yxp.com.
88 IN PTR ftp.yxp.com.
测试:
[root@localhost named]# host 192.168.59.100