Linux-DNS域名解析服务(超长超详细)(DNS系统的作用及类型、BIND的安装和配置文件、构建DNS域名解析服务器的步骤)(正向和反向解析、构建主从域名服务器、配置网关服务器搭建DNS分离解析)

文章目录


前言

  • 我们在前面已经学习了网络地址配置和文件服务管理,在对服务器主机进行访问的时候是使用IP地址的形式,而在实际的网络应用中,通常是使用域名的形式访问服务器的
  • 接下来我们将以著名的DNS服务器软件BIND(Berkeley Internet Name Domain,伯克利因特网域名)为例,来学习域名服务器的搭建过程

一、BIND域名服务基础

1.DNS系统的作用及类型

  • 在整个Internet大家庭中连接了数以亿计的服务器、个人主机,其中大部分的网站、邮件等服务器都使用了域名形式的地址,如www.baidu.com、mail.qq.com等
  • 很显然,这种地址形式比使用192.168.126.1这种IP地址的地址形式更为直观,而且更容易被用户记忆
  • 域名与IP地址之间是多对一的关系,同一个IP地址不一定只对应一个域名,且一个域名只可以对应一个IP地址
  • 他们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的

1.1 DNS系统的作用

  • DNS是“域名系统”的英文缩写
  • DNS服务使用TCP和UDP的53端口,TCP的53端口用于连接DNS服务器,UDP的53端口用于解析DNS
  • 每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符
  • DNS系统在网络中的作用就是维护着一个地址数据库,其中记录了各种主机域名与IP地址的对应关系,以便为客服程序提供正向或者反向的地址查询服务
    • 正向解析:根据域名查找对应的IP地址,是DNS服务器最基本、最常用的功能
    • 反向解析:根据IP地址查找对应的域名,不是很常用,只在一些特定的场合才会用到,比如反垃圾邮件的验证

1.2 DNS系统的分布式数据结构

  • 全世界IPv4根服务器只有13台,1个为主根服务器在美国,其余12个均为辅根服务器,9个在美国,欧洲2个(英国和瑞典),亚洲1个位于日本;中国主导于2016年在全球16个国家完成25台IPv6根服务器的假设
  • 树状结构最项层称为根域,用“."表示,相应服务器称为根服务器,整个域名空间解析权都归根服务器所有
  • 但根服务器无法承担庞大的负载,采用“委派”机制,在根域下设置了一些顶级域,然后将不同顶级域解析权分别委派给相应的顶级域服务器
  • 如将com域的解析权委派给com域服务器,以后但凡根服务器收到以com结尾的城名解析请求,都会转发给com域服务器
  • 同样道理,为了减轻顶级域的压力,又下设了若干二级域,二级域又下设三级域或主机
    mark
  • 根域:位于城名空间最顶层,一般用一个“.”表示
  • 顶级域:一般代表一种类型的组织机构或国家地区,如 .net (网络供应商)、. com(工商企业)、.org (团体组织)、. edu(教育机构)、.gov (政府部门)、. cn (中国国家域名)
  • 二级域:用来标明顶级域内的一个特定的组织,国家顶级城下面的二级域名由国家网络部门统一管理,如 .cn顶级域名下而设置的二级域名: . com.cn、 .net.cn、 .edu.cn
  • 子域:二级域下所创建的各级域统称为子域,各个组织或用户都可以自由申请注册自己的域名
  • 主机:主机位于域名空间最下层,就是一台具体的计算机
  • 示例:www.baidu.com.cn
www 主机
.baidu 子域
.com 二级域
.cn 顶级域
. 根域

1.3 DNS服务器类型

  • 每一台DNS服务器都只负责管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址称之为“zone”(区域)
  • 根据地址解析的方向不同,DNS区域相应的分为正向区域(包含域名到IP地址的解析记录)和反向区域(包含IP地址到域名的解析记录)
  • 根据所管理的区域地址数据的来源不同,DNS系统也可以分为不同的类型,在同一台DNS服务器中,对于不同的区域来说,也拥有不同的身份,常见的几种类型如下:

1.3.1 主域名服务器

  • 负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改
  • 构建主域名服务器时,需要自行建立所负责区域的地址数据文件

1.3.2 从域名服务器

  • 当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务
  • 从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器
  • 构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库

1.3.3 缓存域名服务器

  • 只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但没有域名数据库
  • 它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应
  • 缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息
  • 构建缓存域名服务器时,必须设置根域或指定其他DNS服务器作为解析来源

1.3.4 转发域名服务器

  • 负责所有非本地域名的本地查询
  • 转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果

2.BIND的安装和配置文件

  • BIND不是唯一能够提供域名服务的DNS服务程序,但它却是应用最为广泛的,BIND可以运行在大多数Linux/UNIX主机中,其中官网站点为 https://www.isc.org/

2.1安装bind软件包

[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# yum -y install bind
...略
[root@localhost ~]# rpm -qa | grep "^bind"        ##查询是否已安装与BIND相关的软件包
bind-9.9.4-50.el7.x86_64
bind-libs-9.9.4-50.el7.x86_64
bind-libs-lite-9.9.4-50.el7.x86_64
bind-license-9.9.4-50.el7.noarch
bind-utils-9.9.4-50.el7.x86_64

2.2 查看需要修改的配置文件所在路径

[root@localhost ~]# rpm -qc bind                     #查询bind软件配置文件所在路径
[root@localhost ~]# vim /etc/named.conf              #主配置文件
[root@localhost ~]# /etc/named.rfc1912.zones         #区域配置文件
[root@localhost ~]# /var/named/named.localhost       #区域数据配置文件

三、构建DNS域名解析服务器步骤(正向解析)

  • 记得安装bind软件包,前文有
  • 你的网卡配置是不是静态?相关配置搞全了吗

1.记得关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
##是Linux独有的一种安全机制,但在实际使用中没什么用,反而影响性能,该指令只是临时关闭,我们想永久关闭可以改一个配置文件
[root@localhost ~]# vim /etc/sysconfig/selinux
...略
SELINUX=disabled        ##修改为"disabled"
...略

2.修改主配置文件

  • vim /etc/named.conf
    mark
  • 上图是配置文件内每行的注释以及要修改的都标注出来了
    mark

3.修改区域配置文件,添加正向区域配置

  • vim /etc/named.rfc1912.zones
    mark

4.配置正向区域数据文件

mark

  • vim /var/named/accp.com.zone
    • "@"是变量,为当前DNS域名
    • “accp.com.”此为完全合格域名(FQDN),后面有个“.”,切记不要漏
    • “admin.accp.com”表示管理员邮箱,这里的“@”是变量,用“.”代替
      mark

5.启动服务

mark

  • 如果服务启动失败,可以查看日志文件来排查错误
    tail -f /var/log/messages
  • 若服务器启动卡住了,可以执行以下命令解决
    rndc-confgen -r /dev/urandom -a

6.在客户端的域名解析配置文件中添加DNS服务器地址

  • 修改完后能立即生效
    mark

  • vim /etc/sysconfig/network-scripts/ifcfg-ens3
    DNS1=192.168.126.5
    ##wq保存退出后“systemctl restart network”重启网卡生效

7.测试DNS解析

[root@localhost ~]# host www.accp.com        ##解析成功
www.accp.com has address 192.168.126.5
nslookup www.accp.com
##
nslookup mail.accp.com
##
nslookup ftp.accp.com.
## www的别名,结尾记得加上根域
nslookup abc.accp.com
## 泛域名解析

8.虚拟w10解析测试

  • 查看一下虚拟机Win10和刚才的CentOS7的网络适配器设置,都得是NAT才行!
    mark
  • 然后再虚拟Win10里面更改适配器选项
    mark
    mark
    mark
    mark
  • 点击禁用然后再启动,实现重启
    mark
  • CMD
    mark

四、反向解析

  • 注意了!这里我是恢复快照再重新做反向解析的,如果你是直接自己不思考直接进行下面的操作,是可能会有一点出入的
  • 但你只要把前面的正向解析弄明白了,这些都不是问题!

1.开始之前

  • 作为一名运维人员,要认真仔细,检查每一个细节,这很重要,形成一个思考的习惯
    • 安装了bind软件包没?
    • 关了防火墙没?
  • 修改主配置文件
    vim /etc/named.conf
    ##之前进行正向解析的时候这里就配置好了
    mark

2.修改区域配置文件,添加反向区域配置

  • vim /etc/named.rfc1912.zones
    mark
  • 复制模板的时候,别忘了反向解析IP地址后面跟的细节
  • 注意:一定要细致认真,漏了或者多,反正你错一个符号就会出错,对了,还记得空格隔行等细节

3.配置反向区域数据文件

  • 这是之前配置正向的内容 ,参考参考
    cd /var/named/
    cp -p named.localhost accp.com.zone
    vim accp.com.zone
    mark
  • 开始配置反向
    cp -p accp.com.zone accp.com.zone.local
    vim accp.com.zone.local
    ##保留源文件的权限和属主的属性复制
    mark

4.启动服务

  • systemctl restart named
    注:若这里出错,肯定前面出了什么小问题,可以看我正向解析的内容,有详解,查看日志等排错
  • systemctl start named
    ##启动服务

5.检查确认客户端的域名解析配置文件

  • 这里也有坑,可能会出现你重启网卡或者服务后,这里恢复成默认的“.2”了
  • [root@localhost named]# vim /etc/resolv.conf
    mark

6.测试DNS反向解析

[root@localhost ~]# host 192.168.126.7
7.126.168.192.in-addr.arpa domain name pointer www.accp.com.

[root@localhost ~]# nslookup 192.168.126.7
Server:		192.168.126.7
Address:	192.168.126.7#53

7.126.168.192.in-addr.arpa	name = www.accp.com.

  • OK,有了

五、构建主、从域名服务器

1.修改主域名服务器的区域配置文件,修改正、反向区域配置

  • vim /etc/named.rfc1912.zones
    mark
  • 配置的过程中一定要认真仔细,记得这里添加指向的从服务器IP地址
  • 修改完主域名后一定记得“systemctl restart named”重启一下!!
  • 若是报错,老规矩,查一下日志
    tail /var/log/messages
  • 然后开启另外一台新的虚拟机作为从域名服务器开始进行配置

2.修改从域名服务器的主配置文件

  • 这是一台新的虚拟机,需要我们从新配置,前面操作多了熟了的话,还是很简单的
  • 不嫌我再啰嗦两句,新虚拟机防火墙都关了吗兄弟们
    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
  • 看看有没有挂载镜像,然后
    yum -y install bind
  • vim /etc/named.conf
    mark

3.修改从域名服务器区域配置文件,添加正、反区域配置

  • vim /etc/named.rfc1912.zone
    mark

4.启动服务,并查看区域数据文件是否已下载成功

mark

5.在客户端的域名解析配置文件中添加从DNS服务器地址

  • 这里我们可以回到主服务器
  • vim /etc/resolv.conf
    mark

6.测试

  • 对于客户端来说,从域名服务器和主域名服务器没有什么区别,通过主服务器能查到的信息,从服务器也能查到
    mark
  • OK,正向解析没问题

7.模拟故障,停止主服务器服务,测试主从

mark


六、配置网关服务器搭建DNS分离解析

  • 分离解析的域名服务器实际上也还是主域名服务器,这里所说的分离解析,主要指的是根据不同的客户端提供不同的域名解析记录
  • 来自不同地址的客户机请求解析同一域名的时候,为其提供不同的解析结果
  • 现我们在网关服务器搭建DNS分离解析,使局域网主机解析www.lic.com 为192.168.126.100,外网主机解析 www.lic.com 为12.0.0.100
  • 注:这里我又快照重新做了一遍,改了名字,是xcf而不是之前的accp,local也改成xuchengfei了

1.为网关服务配置双网卡

  • 这里我们接着刚才的配置继续做,用刚才的主域名服务器(虚拟机)
  • 首先关机,然后进入虚拟机设置,添加一块新网卡
    mark
  • 开机后查看一下
    mark
  • 有了,OK
  • 然后ifconfig查看确认一下网口状态
    mark
  • 对新网卡进行配置
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36        ##直接复制ens33的内容到新网卡,再进去编辑,更高效一点
  • 编辑新网卡
    vim ifcfg-ens36
    mark
  • 重启网卡
    systemctl restart network
  • ifconfig 查询确认一下
    mark

3.修改主配置文件

  • 之前重启了,这里重新挂载下镜像(安装dns软件包)
    mount/dev/cdrom /mnt
    (yum -y install bind)
  • vim /etc/named.conf
  • 跟之前配置一样,是“any”,允许所有主机解析,没问题

4.修改区域配置文件

  • 这里先把之前的配置都删掉,然后重新进行配置,注意,只有下图中的这三块
  • 还需要去主配置文件中剪切下图中的这一部分过来:一旦启用view,所有zone都必须在view下,所以要把系统默认自检用的zone也放在view下或者删除
    mark

5.修改区域数据配置文件

mark

  • 先编辑内网的区域数据配置文件 mark
  • 再来编辑外网
[root@localhost named]# cp -p xcf.com.zone.lan        ##直接复制内网,去修改外网 xcf.com.zone.wan
[root@localhost named]# vim xcf.com.zone.wan 

mark

6.查看修改域名解析配置文件

mark

7.测试

  • 再来最后啰嗦两句,检查没有没有关闭系统防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
  • 重启一下DNS域名解析服务并测试
    mark

8.进入虚拟win10测试

  • 右击打开internet设置
    mark
  • 更改适配器选项
    mark
    mark
    mark
    mark
  • CMD
    mark

猜你喜欢

转载自blog.csdn.net/weixin_51486343/article/details/110839361