在互联网上通信需要借助于IP地址,但人类对于数字的记忆能力远不如文字,那么将IP地址转换成容易记忆的文字是个好办法,可是计算机只能识别0、1代码,这时就需要一种机制来解决IP地址与主机名的转换问题,DNS全称为Domain Name System,即域名系统,其作用就是将我们经常使用的“网址”解析为IP地址 联机分布式数据库系统,DNS大多数名字在本地解析,仅少量需要在网上通讯,所以效率高
DNS利用树形目录结构,将主机名的管理分配给不同的层级,这样可以实现更加快速的完成主机名的查找, 修改主机名解析时也更加方便
域:
TLD: Top Level Domain (顶级域名)
组织域:.com, .org, .net, .edu,.gov,.mil,.cc,…
国家域:.cn, .us, .tw, .iq,…
反向域:.in-addr-arpa
FQDN:
FQDN全称为Fully Qualified Domain Name,即完全合格域名
FQDN由两个部分组成:主机名和域名。
因为DNS是逐级管理的 ,所以在不同的层级中主机名与域名也是不同的;
以www.google.com为例:
在第二层中,.com就是域名,google就是主机名;
而到了第三层中,.google.
正向解析: 从FQDN转换为IP地址称为正向解析
反向解析: 从IP地址转换为FQDN称为反向解析
区域:正向解析或反向解析中,每个域的记录就是一个区域
DNS的主要作用是进行主机名的解析
解析:
根据用户提供一种名称,去查询解析库,以得到另一种名称。 域名—>IP,IP—>域名
资源记录:rr(resource record) 有类型的概念;用于此记录解析的属性
递归:客户端只发一次请求,要求对方给出最终结果。
迭代:客户端发出一次请求,对方如果没有授权回答,它就会返回一个能解答这个查询的其它名称服务器列表,
客户端会再向返回的列表中发出请求,直到找到最终负责所查域名的名称服务器,从它得到最终结果。
授权回答:向dns服务器查询一个域名,刚好这个域名是本服务器负责,返回的结果就是授权回答。
从递归和迭代查询可以看出:
客户端-本地dns服务端:这部分属于递归查询。
本地dns服务端---外网:这部分属于迭代查询。
递归查询时,返回的结果只有两种:查询成功或查询失败.
迭代查询,又称作重指引,返回的是最佳的查询点或者主机地址.
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp
#防火墙开放53tcp/udp端口允许访问,当然后期也可以根据不同的环境对不同的网段做限制访问。
主DNS服务器:
为客户端提供域名解析的主要区域,主DNS服务器宕机,会启用从DNS服务器提供服务
从DNS服务器:
缓存服务器:
服务器本身不提供解析区域,只提供非权威应答
转发服务器:
当DNS服务器的解析区域(包括缓存)中无法为当前的请求提供权威应答时,将请求转发至其它的DNS服务器,此时本地DNS服务器就是转发服务器
配置:
nslookup,dig dns客户端测试工具
#tcpdump,wireshark抓包分析工具
DNS服务器搭建,正向解析、反向解析
systemctl stop firewalld #防火墙停止运行
systemctl disable firewalld #关闭防火墙
setenforce 0 #关闭selinux
getenforce
yum install bind-chroot
#主配置文件/etc/named.conf
#区域配置文件/etc/named.rfc1912.zones 用来保存域名和IP地址对应关系
#数据配置文件目录/var/named 用来保存域名和IP地址对应关系的所在位置
vi /etc/named.conf
listen-on port 53 { any; }; #服务器上的所有IP地址均可提供DNS域名解析服务
allow-query { any; }; #允许所有人对本服务器发送DNS查询请求
#named-checkconf 命令检测语法
#用来保存域名和IP地址对应关系的所在位置,在这个文件中,定义了域名与IP地址解析规则,保存的文件位置,以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息。服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器
zone "c74.com" IN {
type master; #服务类型
file "c74.com.zone"; #域名与IP地址解析规则保存文件
allow-update { none; }; #允许哪些客户机动态更新解析信息
}; #正向解析参数
zone "1.168.192.in-addr.arpa" IN { #表示为192.168.1.0/24网段的反射解析区域
type master;
file "192.168.1.arpa";
}; #反向解析参数
可在原有的基础上进行修改,也可清空,保留只用的信息
zone "c74.com" IN { #服务类型
type master; #域名与IP地址解析规则保存文件
file "c74.com.zone"; #允许哪些客户机动态更新解析信息
allow-update { none; };
};
#named-checkzone 检测zone文件的配置
cd /var/named
cp -a named.localhost c74.com.zone #将named.localhost中的文件内容(模板)复制到c74.com.zone里
vi c74.com.zone
$TTL 1D #生存周期为1天 @ IN SOA c74.com. root.c74.com.( #@当前的域名 #授权信息开始 #DNS区域的地址 #域名管理员邮箱不要用@符号
0 ; serial #更新序列号
1D ; refresh #更新时间
1H ; retry #重试延时
1W ; expire #失效时间
3H ) ; minimum #无效解析记录时间
NS ns.c74.com. #域名服务器记录
ns IN A 192.168.5.153 #地址记录ns.c74.com. IP地址选择性的填本机IP即可。
IN MX 10 mail.c74.com. #邮箱交换记录10为优先级数字越小级别越高
mail IN A 192.168.5.153 #地址记录mail.c74.com.
www IN A 192.168.5.153 #地址记录www.c74.com.
news IN A 192.168.5.153 #地址记录news.c74.com.
systemctl restart named #重启DNS服务器
yum install bind-utils -y
#bind-utils为客户端 测试dns使用
nslookup
> www.c74.com
Server: 192.168.5.153
Address: 192.168.5.153#53
#其它也要测试,这里省略,但只要能成功解析出其中一个地址就已经代表DNS已经完成正向。
注:反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.arpa";
};
#从/var/named目录中复制一份反向解析的模板文件(named.loopback),然后把下面的参数填写到文件中
cd /var/named
cp -a named.loopback 192.168.1.arpa
vi 192.168.1.arpa
$TTL 1D
@ IN SOA c74.com. root.c74.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.c74.com.
ns A 192.168.5.153
153 PTR ns.c74.com. #PTR为指针记录,仅用于反向解析中
153 PTR mail.c74.com.
153 PTR www.c74.com.
153 PTR news.c74.com.
systemctl restart named
nslookup
#由于上边已部署主服务器,下主要介绍从服务器
#在DNS域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率
#测试需要两台服务器!主192.168.10.10,从192.168.10.20
vi /etc/named.rfc1912.
zones zone "c74.com" IN {
type master;
file "c74.com.zone";
allow-update { 192.168.10.20; };
};
zone "10.168.192.in-addr.arpa" IN {
type master; file "192.168.10.arpa";
allow-update { 192.168.10.20; };
};
systemctl restart named
vi /etc/named.rfc1912.zones
zone "c74.com" IN {
type slave;
masters { 192.168.10.10; };
file "slaves/c74.com.zone";
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.10.10; };
file "slaves/192.168.10.arpa";
}; #file参数后面定义的是同步数据配置文件后 要保存到的位置,稍后可以在该目录内看到同步的文件}; systemctl restart named
cd /var/named/slaves
ls #注意从服务器会同步主服务器的文件!
nslookup
www.c74.com
192.168.10.10
当然啦。如果有不懂的地方可以私信小编,小编会为你耐心解答,因为小编曾经在搭建DNS时也很迷茫,我经历的,我懂你们的排障时的困惑。