企业级DNS详解

DNS详解

  • DNS简介
    • 权威名称服务器
    • 非权威 / 递归名称服务器
  • 部署DNS服务器
  • DNS高速缓存
    • DNS资源记录
    • DNS排错
    • 实验测试
  • DNS正向解析
  • DNS轮询机制(负载均衡)
  • DNS邮件服务
  • DNS反向解析
  • DNS双向解析
  • 辅助DNS
  • DNS远程更新
    • 基于IP

DNS简介

  • 百度百科:域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

企业级DNS详解_第1张图片
企业级DNS详解_第2张图片
更多有关DNS原理的知识,查看这篇文章。

权威名称服务器

  • 权威名称服务器:存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据。
  • 权威名称服务器的类型包括:
    Master :包含原始区域数据。有时称作 “主要“名称服务器。
    Slave:备份服务器 , 通过区域传送从 Master 服务器获得的区域数据的副本。有时称作 “次要 ”名称服务器。

非权威 / 递归名称服务器

  • 非权威 / 递归名称服务器:客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括仅缓存名称服务器:仅用于查找, 对于非重要数据之外的任何内容都不具有权威性。

部署DNS服务器

  • 我们的dns服务器以我电脑的一台虚拟机为实验平台进行部署。
  • (1)打开虚拟机,配置其网络。
  • (2)在真机开启火墙伪装功能。(目的?)
systemctl start firewalld.service
firewall-cmd --list-all
firewall-cmd --add-masquerade  ##开启火墙伪装
  • (3) 修改虚拟机主机名,为了明确看到是dns服务器。
  • (4)搭建yum源,并且安装dns服务器软件。
yum  search dns				##找dns相关软件,发现是bind。
systemctl  start  named		##开启dns服务,就是named
rpm -ql bind     			##查看DNS服务在系统中的安装文件路径
配置文件 作用
/etc/named.conf 主配置文件
/etc/named.rfc1912.zones 子配置文件,防护主配置文件难读,把dns的域名文件分离:主文件有说明:named.rfc1912.zones,这里会记录相关的域名dns类型和对应的文件
/etc/rndc.conf 加密文件
/var/named 数据文件所在目录,DNS服务器所使用的一些数据文件
/var/named/named.localhost DNS服务器所使用的其他数据文件,正向解析
/var/named/named.loopback DNS服务器所使用的其他数据文件,反向解析
/var/named/slaves 备份主机
  • (5)在dns服务器端需要在火墙列表中加入dns服务
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload 
firewall-cmd --list-all

这里,我们的DNS服务器的基础配置就完成了,接下来,需要进行各项具体的DNS服务配置。

DNS高速缓存

  • 存储已经查找到的有效名和地址的DNS服务器,同时检测无效名和地址。任何DNS服务器可以缓冲数据,其中包括主、次和只高速缓存DNS服务器。
  • 简而言之,就是为了提高域名解析速度。
  • 我们的实验过程就是在企业内部使用一台服务器作为我们的DNS高速缓存服务器,其作用是通过该dns高速缓存服务器去请求权威dns服务器请求域名解析,当成功时,形成对应缓存,当企业内部其他主机再次需要请求已缓存的域名解析时,响应速度会非常快。

DNS资源记录

  • 在实验开始之前,需要先了解一些dns服务器的相关信息。
  • DNS采用资源记录的形式存储信息。每条资源记录均具有一个类型 , 表明其保留的数据类型。
资源记录类型 含义
A 将域名解析到IPv4地址的DNS记录
AAAA 用来将域名解析到IPv6地址的DNS记录
CNAME 别名记录。允许将多个名字映射到同一台计算机。
PTR 反向解析,用来将IPv4/IPv6地址解析为域名
MX 用域名的邮件交换器 ( 向何处发送电子邮件 )
NS 指定该域名由哪个DNS服务器来进行解析
SOA 授权起始 , DNS 区域的信息 ( 管理信息 )

DNS排错

  • 显示来自DNS查找的详细信息,其中包括为什么查询失败。
错误信息 含义
NOERROR 查询成功
NXDOMAIN 服务器提示不能存在这样的名称
SERVFAIL DNS服务器停机或DNSSEC响应验证失败
REFUSED DNS服务器拒绝回答(也许是出于访问控制)

实验测试

  • 第一步,启动dns服务。
    系统中加密字符保存在加密设别里----->cat /dev/random,因为是初次启动,系统加密字符不够,需要在虚拟机(也就是我们的DNS服务器)中敲击键盘或者晃动键盘。
systemctl start named				##然后就可以成功开启服务。
  • 第二步,查看named服务(也就是dns服务)开启的ip及端口
netstat  -antlupe | grep named

关于netstat,主要用来显示网络状态,这里是相关详细介绍。

参数 含义
a all 显示所有连线中的Socket
n 不做解析只显示IP地址
t tcp协议
l 活跃的
u udp协议
p 进程名称
e 扩展信息

使用netstat可以发现,named服务只在本地回环地址127.0.0.1上53号端口开启,所以需要修改其主配置文件。

  • 第三步,修改/etc/named配置文件内容,完成后重启服务。
13行         listen-on port 53 { any; };      	##将53端口的ip设置为本机ip,这样同一网段的的ip就可以访问
19行         allow-query     { any; };       ##允许哪台主机询问,该为所有都可以
20行         forwarders{114.114.114.114;};        ##添加这行的目的是,不问根域名.,直接询问114.114.114.114,为了加快访问速度
34行         dnssec-validation no;          ##不进行安全检测
  • 测试
    新开一台虚拟机和真机模拟,配置其DNS客户机配置文vim resolv.conf,添加nameserver为刚刚配置好的dns服务器IP。

  • 我们使用dig命令进行测试,注意,dig 命令主要用来从 DNS 域名服务器查询主机地址信息。

可以发现,当一台主机解析过某域名后,另一台主机再次查询时,响应时间非常短,说明了我们的dns高速缓存的作用。

DNS正向解析

  • 顾名思义,正向解析就是将域名解析为ip地址的过程。
  • (1)在dns子配置文件vim /etc/named.rfc1912.zones中,复制第19-23行的内容,并修改这几行为:
zone "westos.com" IN {     ##你要维护的域,这里是westos.com
         type master;      ##类型是主DNS
         file "westos.com.zone";    ##在这个文件中查询
         allow-update { none; };
};
  • (2)然后找到named服务的数据文件cd /var/named,找到一个模板named.localhost,复制为你刚指定的文件,因为涉及权限,所以,复制一定要-p复制权限。
cp -p named.localhost westos.com.zone
  • (3)修改westos.com.zone的文件内容
    修改之前,我们对这里的一些参数进行说明:
参数 说明
ttl 1D 客户端缓存能保存的时间 1天
@ 是用来补全正常域名。没有. 就会补齐域名,有.就不会补齐

  • (4)重启服务,进行测试。

有关dig输出部分内容的含义如下:

相关内容 含义
标题 指出关于查询和答案的信息 , 其中包括响应状态和设置的任何特殊标记
QUESTION 提出实际的 DNS 查询
ANSWER 响应 ( 如果有 )
AUTHORITY 负责域 / 区域的名称服务器
ADDITIONAL 提供的其他信息 , 通常是关于名称服务器
底部的注释 指出发送查询的递归名称服务器以及获得响应所花费的时间

DNS轮询机制(负载均衡)

  • DNS的轮询是指一个域名针对多个ip的A记录的解析,DNS服务器将解析请求按照A记录的顺序,逐一分配到不同的ip上,而不同的ip可能对应不同的主机,这样就避免了单一主机负载过高,这样就实现了简单的负载均衡。
  • 实现方式:CNAME——把外部域名转化成内部域名。这样就可以,一个域名对应多台主机,当请求来时,轮询访问RR,降低负载。
  • (1)在westos.com.zone文件中加入以下内容,并重启服务
  • (2)使用dig进行测试,可以发现,两次访问同一域名,得到IP顺序不一样,侧面避免了一台主机的负载过大。

DNS邮件服务

  • SMTP:简单邮件传输协议(发送方)。SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS。
  • POP3:全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”(接收方)。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。端口号:110。
  • MX记录:邮件交换记录 (MX record)是域名系统(DNS)中的一种资源记录类型,用于指定负责处理发往收件人域名的邮件服务器。MX记录允许设置一个优先级,当多个邮件服务器可用时,会根据该值决定投递邮件的服务器。简单邮件传输协议(SMTP)会根据MX记录的值来决定邮件的路由过程。
  • 实验:
  • (1)在DNS服务端,westos.com.zone文件中加入以下内容,并重启服务
  • (2)在客户端进行测试,注意我们这里并没有在服务器端开启master(邮件服务)的IP和端口。

DNS反向解析

  • PTR记录(Pointer Record):是电子邮件系统中的邮件交换记录的一种,常被用于反向地址解析,也就是将ip地址解析为域名的过程。
  • (1)在dns子配置文件vim /etc/named.rfc1912.zones中,复制第36-40行的内容,并修改这几行为:
zone "254.25.172.in-addr.arpa" IN {     ##反向的网络位
         type master;      ##类型是主DNS
         file "172.25.254.ptr";    ##在这个文件中查询
         allow-update { none; };
};
  • (2)然后进入/var/named/ 复制named.loopback模板文件到172.25.254.ptr文件,注意复制时要加-p, 权限也要复制。

  • (3)编辑文件vim 172.25.254.ptr,并重启服务:
  • (4)dns客户端进行测试:

DNS双向解析

  • 目的:实现内网主机和外网主机访问同一网站域名,定义到不同的ip
  • 注意,这里本机相当于内网 其他主机相当于外网(测试用,效果更明显)
  • (1)我们在数据目录/var/named下建立一个外网的域名文件,复制-p westos.com.zone相应的域名具体文件 为外网的westos.com.inter.zone
cp -p westos.com.zone westos.com.inter.zone   ##注意,一定要-p复制
vim westos.com.inter.zone
:%s/172.25.254/1.1.1/				##vim下修改所有172.25.254网段为1.1.1网段

  • (2)建立一个外网的子配置文件,修改其内容,读外网的域名文件:复制 -p /etc/named.rfc1912.zones 外网域名统一文件
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter.zones   ##复制加-p

  • (3)使用man 5 named.conf 查看client使用方法
  • (4)打开named.conf 注释原来的zone ,复制相关方法进来,view 内部网,写匹配的用户网段,写include 指向的文件;view 外部网,写匹配的用户网段,写include 指向的文件
  • (5)重启服务并测试:本虚拟机(DNS服务器)代表内部网,其他虚拟机或真机代表外部网。

辅助DNS

  • 辅助dns是针对外网。形成dns集群:主dns通知辅助dns ,形成数据同步。
    注意:DNS主配置文件中注释掉即表示全部打开。
  • (1)首先,为了避免出错,将主dns中还原原来的环境,及还原双向解析之前的配置。
  • (2)再在一台虚拟机里部署dns服务, (注释就是any) 记得关火墙。操作与之前相同,修改其主机名为dns_slave,并修改配置文件/etc/resolv.conf中的nameserver为他自己(辅助dns)的ip。
  • (3)netstat -antlupe | grep named 查看是否成功
  • (4)关键点:在辅助DNS服务器中,修改/etc/named.rfc1912.conf 内容
    zone "westos.com" IN {
        type slave;
        masters { 172.25.254.125; };
        file "slaves/westos.com.zone";
        allow-update { none; };
};
  • (5) 一定注意符号和名字写对
  • (6)此时重启named服务 会发现slaves下有同步的westos.com.zone
  • (7)以上操作都在dns辅助服务器侧,接下来在主机侧进行
    8 测试 dig 指定域名
    主机侧:
  • (8) 修改 /etc/named.rfc1912.conf 内容 加 also-notify{辅助dnsIP;};
  • (9)vim /var/named/westos.com.zone 修改完域名对应IP后,记得修改标示符号serial 最长10位,可以记录当天日期下天几次修改 ,每一次都必须写,而且是这个标识符只能更大,手动通知。

    注意:
标识 含义
serial: 变化标示符
refresh 自动刷新(不要太频繁)
retry 不成功再次通知
expire 过期时间
mini 最小更新频率
  • (10) 重启服务并测试:

主dns发生变化,辅助dns就会更新了。

DNS远程更新

  • 前提:在进行此实验之前,需要先将要欲更新的DNS服务器(也就是主dns服务器)的selinux设置为disabled,或者在enforcing的状态下将这个的bool值设为1

基于IP

  • (1)在需要更新的DNS服务器中,首先将数据目录/var/named下的域名文件复制到一个目录下,保留备份。
cp -p westos.com.zone /opt/
  • (2)修改要更新的DNS服务器其子配置文件vim /etc/named.rfc1912.conf.,并重启服务:
zone "westos.com" IN {     
         type master;     
         file "westos.com.zone";    
         also-notify {172.25.254.225};
         allow-update { 172.25.254.125; };		##允许本机更新
};

  • (3)使用nsupdate测试
  • (4)查看日志,排查错误。
  • (5)更改/var/named权限为775,否则无法创建.jnl文件。
  • (6)测试:添加和删除对应的域名

你可能感兴趣的:(linux)