DNS
概念
域名体系(英文:Domain Name System,缩写:DNS),运用应用层协议,是互联网的一项服务。 它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地拜访互联网。
简略来说便是:把域名转换成网络能够辨认的ip地址,再经过IP地址拜访主机。 这种由文字组成的称号,清楚明了要更简单回忆。
每一台 DNS 服务器都只担任办理一个有限规模(一个或几个域)内的主机域 名和 IP 地址的对应联系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。 当时,关于每一级域名长度的约束是63个字符,域名总长度则不能超越253个字符。
默认端口:
- 衔接DNS服务器,运用TCP协议的53端口。
- DNS服务器进行解析,运用UDP协议的53端口。
DNS分布式数据结构
域名级数是指一个域名由多少级组成,域名的各个级别被“.”分开,最右边的”.”便是根域名,通常省掉不写。
尖端域名,又称一级域名,常见的有”.com”、”.org”、”.net”、”.cn”等。
二级域名,便是在一级域名前再加一级,如”baidu.com”。
一切的域名必须以点(.)结尾 根域名服务器:
- IPv4的根称号服务器: 全世界只要13台IPv4根域名服务器。1个为主根服务器在美国。其他12个均为辅根服务器,其中9台在美国,欧洲2个(坐落英国和瑞典),亚洲1个坐落日本。
- IPv6的根称号服务器:全球共25台,我国1主3从,美国1主2从。
- 根域名服务器一旦有任何反常对整个互联网影响都十分大。现在全球有了许多的根域名服务器镜像服务器,这点增加了容错率。
一级DNS服务器: 专门担任一级域名(尖端域名)的解析
通用尖端域名:
一级域名 | 阐明 |
---|---|
.com | 商业安排,但个人也能够注册 |
.net | 网络服务安排 |
.edu | 教育安排 |
.int | 国际安排 |
.org | 非营利性安排 |
.gov | 政府安排 |
.mil | 军事安排 |
国家尖端域名:以地舆域名命名的尖端域名 。
一级域名 | 阐明 |
---|---|
.cn | China,我国 |
.jp | Japan,日本 |
.uk | 英国 |
.us | 美国 |
二级DNS服务器:专门担任二级域名的解析
二级域名 | 阐明 |
---|---|
.com.cn | 我国商业安排 |
.edu.cn | 我国教育安排 |
.org.cn | 我国非盈利安排 |
.net.cn | 我国运营商 |
子域名服务器: 专门担任子域名的解析(三级及以下域名都叫子域名)。
三级域名 | 阐明 |
---|---|
sina.com.cn | 新浪 |
pku.edu.cn | 北京大学 |
tsinghua.edu.cn | 清华大学 |
常用主机名
主机名 |
---|
www |
news |
注:
- 114.114.114.114是国内移动、电信和联通通用的DNS服务器,解析成功率相对来说更高,国内用户运用的比较多,速度相对快、安稳,是国内用户上网常用的DNS。
- 8.8.8.8是GOOGLE公司供给的DNS服务器,该地址是全球通用的,相对来说,更适合国外以及拜访国外网站的用户运用。
DNS体系类型
缓存域名服务器
- 也称为DNS高速缓存服务器
- 经过向其他域名服务器查询取得域名–>IP地址记载
- 将域名查询成果缓存到本地,提高重复查询时的速度
主域名服务器
- 特定DNS区域的威望服务器,具有唯一性
- 担任保护该区域内一切域名–>IP地址的映射记载
- 需求自行树立所担任区域的地址数据文件
从域名服务器
- 也称为辅助域名服务器,是对主域名服务器的热备份
- 其保护的域名–>IP地址记载来源于主域名服务器
- 需求从主域名服务器自动同步区域地址数据库
windows体系查询DNS缓存的指令:ipconfig/displaydns
windows体系整理DNS缓存的指令:ipconfig/flushdns
Linux体系整理DNS缓存需求装置nscd软件,启动、履行“nscd -i hosts”指令
仿制代码
DNS的查询办法(递归查询和迭代查询)
递归查询
- 主机向本地域名服务器的查询一般都是采用递归查询。
- 假如主机所问询的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器持续宣布查询恳求报文(即替主机持续查询),而不是让主机自己进行下一步查询。在域名服务器查询期间,客户机将彻底处于等候状况。
- 因而,递归查询只会回来两种信息:要么是所要查询的IP地址,要么是查询失利。
迭代查询
- 本地域名服务器向根域名服务器的查询是迭代查询。
- 当根域名服务器收到本地域名服务器宣布的迭代查询恳求报文后,要么给出所要查询的IP地址,要么告知本地服务器:“你下一步应当向哪一个域名服务器进行查询”。下一个服务器收到恳求后也是如此,要么回来IP,要么告知本地域名服务器下一步去找谁。 即本地域名服务器依照提示的指引顺次查询, 直到回来查询的成果停止 。
递归查询和迭代查询的特点:
- 递归查询:主机只宣布一次恳求,要求对方给出最终成果。回来的成果只要两种:查询成功或查询失利。
- 迭代查询:主机需求发起屡次恳求,回来的是所需IP地址或最佳查询地址。
域名的解析过程
Client(客户机)–> 查询/etc/hosts文件 –> Client DNS Service Local Cache ( 查询DNS服务本机缓存,只要Windows体系有)–> DNS Server(主机向本地域名服务器恳求,递归查询)–>DNS Server Cache (本地域名服务器查询缓存信息)–> DNS iteration(本地域名服务器进行迭代查询)——>根域名服务器)–>一级域名服务器–>二级域名服务器–>三级域名服务器…
-
客户机先去查找本机的/etc/hosts 文件,看文件中是否存在该域名和IP地址的映射记载。假如有就调用,没有就进行下一步。
-
客户机恳求本地域名服务器(LDNS)来解析这个域名,主机要求本地域名服务器直接回来最终成果。在回来成果之前,客户机将彻底处于等候状况,不再二次恳求。一致由本地域名服务器向各级域名服务器转发恳求。
-
本地域名服务器收到客户机的恳求后,先查询自己的缓存信息,假如有这个域名的映射记载则回来成果,没有则进行下一步。
-
本地域名服务器恳求根域名服务器解析这个域名,根域名告知本地域名服务器去找对应的一级域名服务器。
-
本地域名服务器恳求一级域名服务器解析这个域名,一级域名服务器告知它去找对应的二级域名服务器。
-
本地域名服务器恳求二级域名服务器解析这个域名,二级域名服务器告知它去找对应的子域名服务器。
-
本地域名服务器恳求子域名服务器解析这个域名,子域名服务器回来对应的IP地址。
-
本地域名服务器将IP地址记载到缓存中,并回来给客户机。客户机依据收到的IP地址拜访该网站。
bind
BIND装备文件
- 主装备文件: /etc/named.conf
- 根域装备文件: /var/named/named.ca
- 区域装备文件: /etc/named.rfc1912.zones
- 保存DNS解析记载的数据文件坐落: /var/named/目录下
BIND服务控制
- systemctl [status|start|stop|restart] named.service
装备文件(大局装备文件)
BIND服务的主装备文件坐落:/etc/named.conf。
- 设置DNS服务器的大局参数
- 包含监听地址和端口、区域数据文件寄存的目录等
- 运用 options{……}; 的装备段
区域装备文件
区域装备文件坐落:/etc/named.rfc1912.zones。
- 设置本服务器供给域名解析的特定DNS区域
- 包含域名、服务器角色、数据文件名等
- 运用 zone “区域名” IN{……}; 的装备段
区域数据库文件(zone文件)
BIND服务的区域数据库文件坐落/var/named/ 目录下,具体文件名由办理员界说。一般格局为/var/named/域名.zone,例如:/var/named/yuji.com.zone。 局TTL装备项及SOA记载
- $TTL(Time To Live,生计时刻): 表明DNS记载在DNS服务器上的缓存时刻,默认单位秒。
- @:表明当时域名。
- IN:表明运用 Internet 协议。
- SOA(Start Of Authority,授权信息开端):表明解析办法。
- 分号 “;” 开端的部分表明注释信息
2)正向解析记载
- NS记载:域名服务器记载(Name Server)。
- MX记载:邮件交换记载(Mail Exchange)。
- A记载:地址记载(Address)。用来指定主机名(或域名)对应的IP地址记载。用于正向解析。
- CNANE:别名记载。 这种记载允许您将多个姓名映射到同一台计算机。
NS master //当时区域的DNS服务器称号
master IN A 192.168.72.10 //记载DNS服务器master的IP地址
MX 10 mail.yuji.com //MX为邮件交换记载,数字越大优先级越低
MX 20 mail2.yuji.com //MX为邮件交换记载,数字越大优先级越低
mail IN A 192.168.72.103 //记载正向解析mail.yuji.com对应的IP
mail2 IN A 192.168.72.104 //记载正向解析mail2.yuji.com对应的IP
www IN A 192.168.72.101 //记载正向解析www.yuji.com对应的IP
ftp IN A 192.168.72.102 //记载正向解析ftp.yuji.com对应的IP
web IN CNAME WWW //CNAME运用别名,web是www的别名
* IN A 192.168.72.100 //泛域名解析,*表明任意主机名。泛域名有优先级,从上而下匹配。
仿制代码
3)反向解析记载
PTR: 指针记载 (Pointer Record) ,用来指定IP地址对应的域名。用于反向解析。
记载的如一列指定IP地址中的主机地址部分
NS master //当时区域的DNS服务器称号
master IN A 192.168.72.10 //记载DNS服务器的IP地址
200 IN PTR www.nan.com //记载反向解析192.168.72.200对应的IP地址
201 IN PTR ftp.nan.com //记载反向解析192.168.72.201对应的IP地址
仿制代码
小贴士:
- TTL可从大局继承
- 运用 “@” 符号可用于引用当时区域的域名
- 同一个姓名能够经过多条记载界说多个不同的值;此刻DNS服务器会以轮询办法响应。
- 同一个值也可能有多个不同的界说姓名;经过多个不同的姓名指向同一个值进行界说;此仅表明经过多个不同的姓名能够找到同一个主机。
区域数据库文件的特别应用
根据域名解析的负载均衡
www IN A 192.168.19.10
www IN A 192.168.19.11
www IN A 192.168.19.12
- 同一域名对应到多个IP地址
泛域名解析
- 找不到精确对应的A记载时,运用星号(*)进行匹配
* IN A 192.168.19.11
试验
正向解析
试验要求:
架起一台DNS服务器担任yuji.com域的域名解析作业。DNS服务器的IP地址为192.168.72.10,域名为master.pp.com。要求为以下域名做正向解析作业。
www.pp.com 192.168.19.21
mail.pp.com 192.168.19.22
ftp.pp.com 192.168.19.23
试验思路:
- 装置bind软件包
- 修正主装备文件
- 修正区域装备文件,增加正向区域装备
- 装备正向区域数据文件
- 启动服务,封闭防火墙
- 在客户端的域名解析装备文件中增加DNS服务器地址
- 测验DNS解析,验证试验是否成功。
试验过程:
过程一:
装置bind软件包
yum install -y bind //装置bind软件包
[root@localhost ~]# rpm -qc bind //查询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
过程二:
修正主装备文件
options {
listen-on port 53 { any; }; //允许DNS服务器监听一切IP地址
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; //允许一切客户端查询
过程三:
修正区域装备文件,增加正向区域装备
vim /etc/named.rfc1912.zones //修正区域装备文件
zone "pp.com" IN { //界说正向DNS区域
type master; //界说区域类型为master
file "pp.com。zone"; //设置对应的正向解析数据库文件
allow-update { none; }; //
};
过程四:
装备正向区域数据文件
[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 pp.com.zone
[root@localhost named]# vim pp.com.zone
$TTL 1D
@ IN SOA pp.com. admin.pp.com.zone. (
0 ; serial //更新序列号,能够是 10 位以内的整数
1D ; refresh //刷新时刻,从头下载地址数据的间隔
1H ; retry //重试延时,下载失利后的重试间隔
1W ; expire //失效时刻,超越该时刻仍无法下载则放弃
3H ) ; minimum //无效解析记载的生计周期
NS pp.com.
A 192.168.19.20
www IN A 192.168.19.21
mail IN A 192.168.19.22
ftp IN A 192.168.19.23
* IN A 192.168.19.24
- “@”这儿是一个变量,当时DNS区域名
- SOA记载中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
- “pp.com.”此为彻底合格域名(FQDN),后边有个“.”不能漏掉
- “admin.pp.com.”表明办理员邮箱,这儿的“@”符号已有其他含义,所以用“.”替代
过程五:
启动服务,封闭防火墙
[root@localhost named]# systemctl start named
[root@localhost named]# systemctl stop firewalld
[root@localhost named]# setenforce 0
- 假如服务启动失利,能够检查日志文件来排查过错
tail -f /var/log/messages- 假如服务启动卡住,能够履行下面指令解决
rndc-confgen -r /dev/urandom -a
过程六:
在客户端的域名解析装备文件中增加DNS服务器地址
办法一:
[root@localhost named]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.19.20
#nameserver 114.114.114.114
#修正完立即收效
办法二:
[root@localhost named]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=34aeac22-1154-4c4b-a76c-55c5e7b81429
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.19.20
NETMASK=255.255.255.0
GATEWAY=192.168.19.2
DNS1=192.168,19,20
#DNS2=114.114.114.114
[root@localhost named]# systemctl restart network
#修正完后需求重启网卡
过程七:
测验DNS解析,验证试验是否成功。
[root@localhost named]# host www.pp.com
www.pp.com has address 192.168.19.21
[root@localhost named]# host ftp.pp.com
ftp.pp.com has address 192.168.19.23
反向解析
试验要求:
要求为以下IP地址做反向解析作业。
192.168.19.200 www.chc.com
192.168.72.201 ftp.chc.com
试验思路:
- 修正区域装备文件,增加反向区域装备
- 装备反向区域数据文件
- 重启服务进行测验
试验过程:
过程一:
修正区域装备文件,增加反向区域装备
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "19.168.192.in-addr.arpa" IN { //反向解析的地址倒过来写,代表解析192.168.19段的地址
type master;
file "chc.com.zone"; //指定区域数据文件为chc.com.zone
allow-update { none; };
};
过程二:
装备反向区域数据文件
[root@localhost named]# cp -p named.localhost chc.com.zone
[root@localhost named]# vim chc.com.zone
$TTL 1D
@ IN SOA chc.com. admin.chc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS chc.com.
A 192.168.19.20
200 IN PTR www.chc.com
201 IN PTR mail.chc.com
#PTR为反向指针
过程三:
重启服务进行测验
[root@localhost named]# host 192.168.19.200
200.19.168.192.in-addr.arpa domain name pointer www.chc.com.19.168.192.in-addr.arpa.
[root@localhost named]# nslookup 192.168.19.201
201.19.168.192.in-addr.arpa name = mail.chc.com.19.168.192.in-addr.arpa.
构建主从域名服务器
试验:
试验思路:
- 修正主域名服务器的区域装备文件,修正正、反向区域装备
- 修正从域名服务器的主装备文件
- 修正从域名服务器区域装备文件,增加正、反区域装备
- 主、从都重启动服务,并检查区域数据文件是否已下载成功
- 在客户端的域名解析装备文件中增加从DNS服务器地址;
在服务端端的域名解析装备文件中增加主DNS服务器地址 - 测验
试验过程:
过程一:
修正主域名服务器的区域装备文件,修正正、反向区域装备
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "jlx.com" IN {
type master; //类型为主区域
file "jlx.com.zone";
allow-transfer { 192.168.19.10; }; //允许从服务器下载正向区域数据,这儿添从服务器的IP地址
};
zone "19.168.192.in-addr.arpa" IN {
type master;
file "jlx.com.zone.local";
allow-transfer {192.168.19.10; };
};:
过程二:
修正从域名服务器的主装备文件
[root@localhost ~]# vim /etc/named.conf
options {
listen-on port 53 { 192.168.19.10; }; //监听53端口,ip地址运用供给服务的本地IP即可,也可用any代表一切
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; //允许运用本DNS解析服务的网段,也可用any代表一切
过程三:
修正从域名服务器区域装备文件,增加正、反区域装备
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "jlx.com" IN {
type slave;
file "slaves/jlx.com.zone"; //下载的区域数据文件保存到slaves/目录下
masters { 192.168.19.20; }; //指定主服务器的IP地址
zone "19.168.192.in-addr.arpa" IN {
type slave;
file "slaves/jlx.com.zone.local";
masters { 192.168.19.20; };
过程四:
主、从都重启动服务,并检查区域数据文件是否已下载成功
systemctl restart named
[root@localhost ~]# ls -l /var/named/slaves/
总用量 8
-rw-r--r--. 1 named named 252 8月 17 18:06 jlx.com.zone
-rw-r--r--. 1 named named 400 8月 17 18:06 jlx.com.zone.local
过程五: 在客户端的域名解析装备文件中增加从DNS服务器地址
[root@localhost ~]# echo "nameserver 192.168.19.10">> /etc/resolv.conf
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.19.20
nameserver 192.168.19.10
在服务端端的域名解析装备文件中增加主DNS服务器地址
[root@localhost ~]# echo "nameserver 192.168.19.20">> /etc/resolv.conf
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.19.10
nameserver 192.168.19.20
过程六:
测验
[root@localhost ~]# host 192.168.19.200
200.19.168.192.in-addr.arpa domain name pointer www.jlx.com.19.168.192.in-addr.arpa.
[root@localhost ~]# nslookup 192.168.19.200
200.19.168.192.in-addr.arpa name = www.jlx.com.19.168.192.in-addr.arpa.
总结:
- 一定要封闭防火墙和selinux。
- 修正装备文件和区域数据库文件时,需求严厉注意语法书写,其格局十分严厉。
- ”@“是DNS记载中的保留字,表明当时域名。
- 修正装备文件后,一定要重启服务,之后才能收效。