DNS域名系统(Domain Name System缩写DNS,Domain,Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据块,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
全球有13台DNS服务器,9个在美国,2个在欧洲(英国和瑞典),亚洲日本1个
DNS的默认端口号为53,DNS端口分为TCP和UDP
TCP是用来做区域传送的,多用于主从同步,在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器读取该区的DNS数据信息
UDP是用来做DNS解析的域名:通常由一个完全合格域名(FQDN)标识,FQDN全称 Fully Qualified Domain Name,它能准确表示出其相对于DNS域树根的位置,也就是节点到DNS树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“."分隔,对于DNS域google来说,其完全正式域名(FQDN)为google.com。
例:google为com域的子域,其表示方法为google.com,而www为google域中的子域,可以使用www.google.com表示
注意,通常,FQDN有严格的命名限制,长度不能超过256字节。只允许使用字符a-z,0-9,A-Z和减号(-),点号(,)只允许在域名标志之间(例如"google.com")或者FQDN的结尾使用,域名不区分大小,有最顶层到下层,可以分成:根域、顶级域、二级域、子域
FQDN=Hostname+DomainName
如:www.baidu.com
注意:最前面的一定是主机,最后一个点表示根域,通常是省略不写的,但实际上www.abc.com=www.abc.com.
域名结构:
http://www.sina.com.cn./
完全域名:同时带有主机名和域名的名称
windows系统查询dns缓存命令:ipconfig /displaydns
windows系统清理dns缓存命令:ipconfig /flushdns
DNS系统的结构为分布式数据结构
根域:位于树状结构最顶层,用"."表示
顶级域:一般代表一种类型的组织机构或国家地区
如:.net(网络供应商)、.com(工商企业)、.org(团体组织)、.edu(教育机构)、.gov(政府部门)、.cn(中国国家域名)
二级域:用来表明顶级域内一个特定的组织,国家顶级域下面的二级域名由国家部门统一管理
子域:二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名
主机:主机位于域名空间最下层,就是一台具体的计算机
域名与IP地址之间是多对一的关系,一个IP地址不一定只对应一个域名,且一个域名只可以对应一个IP地址
组织域:.com .org .net .cc
国家域:.cn .tw(台湾) .hk(香港) .iq .ir .jp(日本)
114.114.114.114是国内三大运营商移动、电信、联通通用的DNS
8.8.8.8是GOOGLE公司提供的DNS,该地址全球通用,相对来说,更适合国外一级访问国外网站的的用户使用
223.5.5.5和223.6.6.6:阿里云的DNS
递归查询是一种DNS服务器的查询模式,在该模式下DNS服务器接收到客户机请求,必须是哟个一个准确的查询结果回复客户机,如果DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机
简单来说就是客户机发送请求后只需要等待结果即可,中间具体过程交给服务器实现
DNS服务器另一种方式为迭代查询,当客户机发送查询请求时,DNS服务器并不直接回复查询结果,而是告诉客户机另一台DNS服务器地址,客户机再向这台DNS服务器提交请求,依次循环知道返回查询的结果为止
迭代查询就是客户机发送的请求需要自己挨个查询才能得到结果,服务器没有结果的时候只会提供其他可能知道答案的服务器地址,而不会帮客户机去查询结果,与递归截然相反
从递归和迭代查询可以看出:
客户端—本地DNS服务端,这部分属于递归查询
本地DNS服务端—外网,这部分属于迭代查询
递归查询时,返回的结果只有两种:查询成功或查询失败;而迭代查询又称作重指引,返回的是最佳的查询点或主机地址
1.先查本机的缓存记录,2.查询host文件;3,查询dns域名服务器,交给DNS域名服务器处理
以上过程称为递归查询,:我要一个答案会直接反馈结果
4.求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
5.求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器地址,去找二级域服务器
6,求助二级域服务器,二级域服务器查询发现时我的主机,把查询到的IP地址返回给本地域名服务器
7,本地域名服务器将结果记录并缓存,然后把域名和IP的对应关系返回给客户端
1.主域名服务器:负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改,构建主域名服务器时,需要自行建立所负责区域的地址数据库
2.从域名服务器:当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务,从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器,构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库,它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时它给予响应,缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息,构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源
4.转发域名服务器:负责所有非本地域名的本地查询,转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求一次转发到指定的域名服务器,直到查找到结果为止,佛则返回无法映射的结果
生产环境中修改配置文件,切记需要先备份
2.修改主配置文件
vim /etc/named.conf 修改全局配置文件
options {
listen-on port 53 { 192.168.206.128; }; 监听53端口。IP地址使用提供服务的本地IP,也可以用any代表所有
#listen-on-v6 port 53 { ::1; }; 表示ipV6行,这里不使用加"#"注释或者直接删除掉
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; };原为localhost,也可写为192.168.206.0/24(本机IP网段)允许本机使用DNS解析的网段
zone "." IN { 正向解析,"."代表根区域
type hint; 表示类型,这里为根区域
file "named.ca"; 区域数据文件,"name.ca"记录了全球13台根域服务器和IP地址
}
include "/etc/named.rfc1912.zones"; 包含区域配置文件的所有配置
3.修改区域配置文件,添加正向区域配置
vim /etc/named.rfc1912.zones
zone "xiaofeixia.com" IN { 正向解析"xiaofeixia.com"区域
type master; 类型
file "xiaofeixia.com.zone"; 指定区域数据文件"xiaofeixia.com.zone"
allow-update { none; };
};
4.配置正向区域数据文件
cd /var/named/
cp -p named.localhost xiaofeixia.com.zone 保留源文件的权限和属主的属性复制(cp后面一定要加-p)
vim /var/named/xiaofei.com.zone
$TTL 1D 设置缓存解析结果的有效时间也就是生命周期
@ IN SOA xiaofeixia.com admin.xiaofeixia.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS xiaofeixia.com. 记录当前区域的DNS服务器的名称
A 192.168.206.128 记录主机IP地址
IN MX 10 mail.xiaofeixia.com MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.206.150 记录正向解析www.xiaofeixia.com对应的IP地址
mail IN A 192.168.206.180
ftp IN CNAME www CNAME使用别名,ftp是www的别名
* IN A 192.168.206.249 泛域名解析,"*"代表任意主机名
5.启动服务,
systemctl start named 启动服务
systemctl stop firewalld 关闭防火墙
setenforce 0 关闭安全机制增强功能
name.checkconf -z /etc/named.conf 查看配置文件
tail -f /var/log/messages 启动失败时,通过查看日志文件排错
rndc-confgen -r /dev/urandom -a 当服务启动时卡住,可以执行该命令解决
6.在客户端的域名解析配置文件中添加DNS服务器地址
方法一:
vim /etc/reslov.conf
nameserver 192.168.206.128 修改完成后立即生效
方法二:
vim /etc/sysconfig/network-scrpits/ifcfg-ens33
DNS1=192.168.206.128
systemctl restart network 修改完成后重启网卡
7.测试DNS解析服务是否成功
1.修改主配置文件与正向解析相同
2.修改区域配置文件
vim /etc/named.rfc1912.zones
zone "0.206.168.192.in-addr.arpa" IN { 反向解析时,网段地址需要倒过来写
type master;
file "xiaofeixia.com.zone.local"; 指定区域数据文件为"xiaofeixia.com.zone.local;不能和正向文件名相同)
allow-update { none; };
3.备份区域数据文件,修改区域数据配置文件
cd /var/named
cp -p named.localhost xiaofeixia.com.zone.local
vim /var/named/xiaofeixia.com.zone.local
$TTL 1D
@ IN SOA xiaofeixia.com admin.xiaofeixia.com (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS xiaofeixia.com.
A 192.168.206.128
100 IN PTR www.xiaofeixia.com PTR反向指针;反向解析192.168.206.100地址结果为www.xiaofeixia.com;
200 IN PTR mail.xiaofeixia.com PTR反向指针;反向解析192.168.206.200邮箱地址结果为mail.xiaofeixia.com
4.关闭防火墙,重启DNS服务,测试DNS反向解析
1.修改主配置文件
2.修改主区域配置文件
4.配置区域数据文件
5.重启服务
从服务器配置
修改主配置文件
3.重启服务,查看从服务器是否将主服务器的区域数据文件备份过来
4.指定从服务器的DNS
5.关掉主服务器,验证从服务器
分离解析:同一个DNS服务器,同一个域名情况下,不同网段进行访问会解析出不同的IP地址
分离解析的域名服务器实际也是主域名服务器,这里主要是根据不同的客户端提供不同的域名解析记录,比如来自内网和外网的不同网段地址的客户机请求同一域名时,为其提供不同的解析结果
实验环境:1台CentOS 7,虚拟机一台win10
1.安装bind服务
2.为网关服务器配置双网卡
4.Xshell掉线,虚拟机内查看网卡是否修改成功
6.修改区域数据文件,备份区域数据文件
7.重启服务,验证结果,
8.外网主机修改仅主机模式,设置外网主机网络适配器 IP地址与网关
9.运行cmd查看解析结果为外网地址
通过上述内容和实验,可以了解DNS的工作原理(包含递归和迭代查询),DNS正向解析和反向解析的配置,主从服务器的配置方法,出现主服务器宕机时,从服务器就会顶替工作;分离解析的配置,在生产中用的很多,很多电商就使用这个方法给顾客一个完美的体验,外网和内网会共用一个域名