详解Linux搭建DNS服务器
1.dns服务器概念
在互联网上通信需要借助于ip地址,但人类对于数字的记忆能力远不如文字,那么将ip地址转换成容易记忆的文字是个好办法,可是计算机只能识别0、1代码,这时就需要一种机制来解决ip地址与主机名的转换问题,dns全称为domain name system,即域名系统,其作用就是将我们经常使用的“网址”解析为ip地址 联机分布式数据库系统,dns大多数名字在本地解析,仅少量需要在网上通讯,所以效率高
2.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是逐级管理的 ,所以在不同的层级中主机名与域名也是不同的;
以为例:
在第二层中,.com就是域名,google就是主机名;
而到了第三层中,.google.
正向解析: 从fqdn转换为ip地址称为正向解析
反向解析: 从ip地址转换为fqdn称为反向解析
区域:正向解析或反向解析中,每个域的记录就是一个区域
3.dns服务器解析
dns的主要作用是进行主机名的解析
解析:
根据用户提供一种名称,去查询解析库,以得到另一种名称。 域名—>ip,ip—>域名
资源记录:rr(resource record) 有类型的概念;用于此记录解析的属性
- *soa记录:起始授权记录,一个区域文件只能有一个
- *a记录:用来指定主机名(或域名)对应的ip(ipv4)地址记录。(aaaa ipv6)
- *cname记录:别名解析(域名)
- *ns记录:域名服务器记录,用来指定该域名由哪个dns服务器来进行解析。
- *mx记录:邮件交换记录,指向邮件服务器
- *ptr记录:反向dns记录,a记录的反向
- *ttl值:生存时间,dns记录在dns服务器上缓存时间
4.dns服务器原理
dns采用两种查询机制:递归和迭代
客户端向dns服务器发起查询请求,dns服务器搜索本地解析库没有结果,于是向根域发起查询请求,根域告诉dns服务器.com服务器上有它需要的资源,dns服务器又向.com服务器发起查询请求,结果被告知.google.com服务器上有它想要的结果,后终于在.google.com服务器上找到了解析记录,并返回给了客户端 在上面的查询过程中,客户端只发起了一次请求,并得到了后的结果,这种查询方式被称为递归
而dns服务器在查询过程中不停的发起请求,直到找到想要的结果,这种查询方式被称为迭代
5.dns查询顺序
- 本地hosts文件
- 本地dns缓存
- 本地dns服务器
- 发起迭代查询
6.dns服务器端口 tcp udp 53
7.dns服务器类型
主dns服务器:
为客户端提供域名解析的主要区域,主dns服务器宕机,会启用从dns服务器提供服务
从dns服务器:
- 1.主服务器dns长期无应答,从服务器也会停止提供服务
- 2.主从区域之间的同步采用周期性检查+通知的机制
- 3.从服务器周期性的检查主服务器上的记录情况,一旦发现修改就会同步,另外主服务器上如果有数据被修改了,会立即通知从服务器更新记录
缓存服务器:
服务器本身不提供解析区域,只提供非权威应答
转发服务器:
当dns服务器的解析区域(包括缓存)中无法为当前的请求提供权威应答时,将请求转发至其它的dns服务器,此时本地dns服务器就是转发服务器
配置:
nslookup,dig dns客户端测试工具
#tcpdump,wireshark抓包分析工具
dns服务器搭建,正向解析、反向解析
1.关闭防火墙&selinux
systemctl stop firewalld systemctl disable firewalld setenforce 0 getenforce
2.安装dns服务器软件
yum install bind-chroot #主配置文件/etc/named.conf #区域配置文件/etc/named.rfc1912.zones 用来保存域名和ip地址对应关系 #数据配置文件目录/var/named 用来保存域名和ip地址对应关系的所在位置
3.修改主配置文件
vi /etc/named.conf listen-on port 53 { any; }; #服务器上的所有ip地址均可提供dns域名解析服务 allow-query { any; }; #允许所有人对本服务器发送dns查询请求 #named-checkconf 命令检测语法
4.修改区域配置文件
#用来保存域名和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"; }; #反向解析参数
5.正向解析
5.1 vi /etc/named.rfc1912.zones
可在原有的基础上进行修改,也可清空,保留只用的信息 zone "c74.com" in { #服务类型 type master; #域名与ip地址解析规则保存文件 file "c74.com.zone"; #允许哪些客户机动态更新解析信息 allow-update { none; }; }; #named-checkzone 检测zone文件的配置
5.2#编辑数据配置文件。从/var/named目录中复制一份正向解析的模板文件(named.localhost),然后把域名和ip地址的对应数据填写到数据配置文件中并保存。在复制时记得加上-a参数,这可以保留原始文件的所有者、所属组、权限属性等信息
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. 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.
5.3 启动服务及测试
systemctl restart named yum install bind-utils -y #bind-utils为客户端 测试dns使用 nslookup > www.c74.com server: 192.168.5.153 address: 192.168.5.153#53 #其它也要测试,这里省略
6.反向解析
#反向解析的作用是将用户提交的ip地址解析为对应的域名信息,它一般用于对某个ip地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件
6.1 vi /etc/named.rfc1912.zones
zone "1.168.192.in-addr.arpa" in { type master; file "192.168.1.arpa"; };
6.2 编辑配置文件
#从/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.
6.3 测试
systemctl restart named nslookup
7.dns高级之主从服务
#由于上边已部署主服务器,下主要介绍从服务器
#在dns域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,还可以提升用户的查询效率
#测试需要两台服务器!主192.168.10.10,从192.168.10.20
7.1#在主服务器的区域配置文件中允许该从服务器的更新请求,即修改allow-update {允许更新区域信息的主机地址;};参 数,然后重启主服务器的dns服务程序
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
7.2#在从服务器中填写主服务器的ip地址与要抓取的区域信息,然后重启服务。注意此时的服务类型应该是slave(从), 而不再是master(主)。masters参数后面应该为主服务器的ip地址,而且file参数后面定义的是同步数据配置文件后 要保存到的位置,稍后可以在该目录内看到同步的文件
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
7.3 #检验解析结果。当从服务器的dns服务程序在重启后,一般就已经自动从主服务器上同步了数据配置文件,而且该文件 默认会放置在区域配置文件中所定义的目录位置中。随后修改从服务器的网络参数,把dns地址参数修改成 192.168.10.20,这样即可使用从服务器自身提供的dns域名解析服务。后就可以使用nslookup命令顺利看到解析结果了
cd /var/named/slaves ls #注意从服务器会同步主服务器的文件! nslookup www.c74.com 192.168.10.10
以上所述是小编给大家介绍的linux搭建dns服务器详解整合,希望对大家有所帮助
上一篇: Vue的土著指令和自定义指令实例详解
下一篇: PHP 记录访客的浏览信息方法