目录

一、DNS服务器原理

1、什么是DNS

2、DNS服务器查询过程

二、主备DNS服务器搭建

1、搭建环境

2、检查安装DNS服务

3、修改主服务器配置文件

4、修改备服务器配置文件

5、启动服务

6、验证结果

7、排错思路

一、DNS服务器原理
1、什么是DNS
DNS域名解析服务:是将域名和ip地址相互映射的一个分布式数据库。

正向解析:将域名解析为对应的ip地址。

反向解析:通过ip地址解析对应的域名。

2、DNS服务器查询过程
主域名服务器:特定DNS区域的权威服务器,自行建立所负责区域的地址数据文件

从域名服务器:从主服务器或从服务器"复制"(区域传输)解析库副本

递归查询:客户机和本地服务器之间的,对已有服务器依次发送,A可以解析则返回,不能则递归到下一台直到成功或全部都失败返回结果,不需要动手。

迭代查询:本地服务器向其他服务器查询,查询源不变查询目标一直在变,需要多次查询,需要自己动手。

DNS系统分布式数据结构:

DNS查询过程:

①首先查询本机缓存,有则返回结果,没有则进行下一步

②查询本机hosts文件,有则返回结果,没有则进行下一步

③查询dns域名服务器,如果是本地服务器有缓存直接返回,没有则进行下一步

④求助根服务器,根服务器求助顶级服务器--顶级求助二级服务器,如果二级发现是自己主机则返回结果给-本地域名解析服务器返回结果。

hosts文件:优先级最高,只对当前主机有效,可减少dns查询过程从而加快访问速度。

linux系统hosts文件位置:/etc/hosts

window系统文件位置:c:Windows\System32\drivers\etc\hosts

二、主备DNS服务器搭建

1、搭建环境

2台centos 7.4虚拟机,ip地址在同一网段192.168.10.11和192.168.10.12,关闭防火墙和selinux

#2台虚拟机都操作
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭selinux

3、修改主服务器配置文件

主配置文件位置:/etc/named.conf

区域配置文件位置:/etc/named.rfc1912.zones

区域数据配置文件模板位置:/var/named/named.localhost

主配置文件修改:
vim /etc/named.conf
options {
listen-on port 53 {localhost;} #监听localhost地址的UDP 53端口,localhost表示提供dns服务的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"; #内存统计文件的位置
allow-query { any; }; #允许使用本DNS解析服务的网段或ip地址,也可用any表示所有
}

区域配置文件修改:
vim /etc/named.rfc1912.zones
zone "localhost" IN { #正向解析配置,localhost表示域名
type master #类型为主DNS服务器
file “named.loopback”; #指定区域数据文件为named.loopback
allow-update {none;};#表示若主dns故障切换到另一个指定的备用DNS服务器,none表示没有不指定
};

zone "1.0.0.127.in-addr.arpa" IN { #反向解析配置,1.0.0.127表示反向的ip,注意要反向写ip地址
type master; #类型为主DNS服务器
file "named.loopback"; #指定区域数据文件为named.loopback
allow-update { none; }; #表示若主dns故障切换到另一个指定的备用DNS服务器,none表示没有不指定
};

制作区域数据配置文件lhj.com:
cd /var/named #进入区域数据配置文件模板文件目录
cp -p named.localhost lhj.com #名字为区域配置文件内写的名称lhj.com,注意拷贝时加 -p 保留权限,否则启动服务会报错不能识别
vim /var/named/lhj.com #修改复制好的区域数据配置文件
区域数据配置文件内容:
$TTL 1D 表示设置缓存解析结果的有效时间
​ 0 :serial #更新序列号,一般是10以内的证书

​ 1D :refresh #刷新时间,重新下载地址数据的间隔

​ 1H :retry #重试间隔,下载失败后的重试间隔

​ 1W :expire #失效时间,超过该时间仍然无法下载则放弃

@ IN SOA @ rename.invalid. {
#@为变量表示当前DNS域名注意必须从根域写起,IN表示使用INTERNET协议,SOA表示起始授权记录,rename.invalid. 表示邮箱
​ NS @ #NS(nameserver)表示当前区域的DNS服务器的名称为@可修改
​ A 127.0.0.1 #A表示DNS服务器正向解析的地址为127.0.0.1 需要对应主配置文件内ip地址
​ AAAA ;;1 #表示ipv6服务器地址,不用可删除
​ PTR #表示DNS服务器反向解析,需要手动添加,默认没有
www IN A 127.0.0.2 #表示www服务的ip地址为127.0.0.2
mail IN A 127.0.0.3 #表示mail服务的ip地址为127.0.0.3
2 IN PTR www.localhost. com #表示dns服务器网段的2 ip对应为www域名
3 IN PTR mail.localhost. com #表示dns服务器网段的3 ip对应mail域名
}

4、修改备服务器配置文件

主区域配置文件位置:/etc/named.com

区域配置文件位置:/etc/named.rfc1912.zones

区域数据配置文件备份主服务器文件位置:/var/named/salves目录下

备用服务器区域配置文件:
zone "lhj.com" IN { #正向解析域名与主服务器相同
type slave; #类型为备服务器
file "slaves/lhj.com"; #文件位置为同步主服务的区域数据文件位置/var/named/slaves/lhj.com
masters { 192.168.30.11; }; #主服务地址为192.168.30.11
};
zone "30.168.192.in-addr.arpa" IN { #反向解析ip与主服务器相同
type slave; #类型为备服务器
file "slaves/lhj.com"; #文件位置为同步主服务的区域数据文件位置/var/named/slaves/lhj.com
masters { 192.168.30.11; }; #主服务地址为192.168.30.1

5、启动服务

开启主备服务器的dns服务并查看备服务器中是否已同步主服务器的区域数据配置文件

主备均需执行:
systemctl start named #启动主备DNS服务器
备服务器执行:
cd /var/named/slaves #进入备服务器同步主服务器区域数据配置文件目录
ls #查看该目录下是否有同步主服务器区域数据配置文件lhj.com

6、验证结果
①首先将主服务和备服务器的ip地址都加到各自的dns服务器配置文件(/etc/resolve.conf)中,注意主服务器必须在备服务器上方,如果有公网的dns服务器则需要将本地服务器放在公网服务器上方。读取/etc/resolve.conf文件的顺序是从上到下,可以解析则停止。

主备均执行:
vim /etc/resolv.conf #编辑dns服务器配置文件
内容:
nameserver 192.168.30.11 #添加本地主dns服务器
nameserver 192.168.30.12 #添加本地备dns服务器

② /etc/resolve.conf配置文件添加完毕后在俩台服务器分别进行正反dns解析,查看是否为配置的地址和域名。

 

③关闭主服务器dns服务进行正反向解析查看是否会切换到备服务进行解析。

主服务器执行:
systemctl stop named #关闭主服务器dns服务

7、排错思路
①首先判断主备服务防火墙和selinux是否都已经关闭

②查看主备服务器中/etc/resolv.conf是否添加主备服务器地址且主服务器在最上方

③查看主配置文件中网段范围是否在本机范围内

④查看区域配置文件中配置是否有问题,重点查看file中写的文件名是否与区域数据配置文件创建的一致

⑤查看区域配置文件是否有配置错误或不对应,重点查看是否都有写根域 .不能遗忘 .根域。

⑥如果配置文件都没问题启动服务报错,实时查看/var/log/messages日志的报错。

Linux网络第三章:DNS服务器原理及搭建的更多相关文章

  1. Linux网络编程(三)

    Linux网络编程(三) wait()还是waitpid() Linux网络编程(二)存在客户端断开连接后,服务器端存在大量僵尸进程.这是由于服务器子进程终止后,发送SIGCHLD信号给父进程,而父进 ...

  2. centos6.5环境DNS-本地DNS服务器bind的搭建

    centos6.5环境DNS-本地DNS服务器bind的搭建 域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库, ...

  3. Linux网络服务第二章DHCP原理与配置

    1.笔记 服务端端口:67 客户端端口:68 dhcliemt -r:释放IP地址 dhcliemt -d:重新获取IP地址 :.,$ s/190.168.200 / 192.168.100 /g 从 ...

  4. DNS服务器原理

    19.1 什么是DNS   主机名自动解析为 IP 就很重要!那就是 DNS.   19.1.1 用网络主机名取得IP的历史渊源   单一档案处理上网的年代: /etc/hosts   利用某些特定的 ...

  5. Linux网络服务第一章Linux网络基础设置

    1.笔记 systenctl restart network:重启网卡网络服务 bash:刷新主机名称 netstat:查看网络状态 route -n:不做地址解析 mii-tool eno16777 ...

  6. DNS服务器原理介绍(一)

    DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终 ...

  7. [转]DNS服务器原理详解与Centos6.x下搭建DNS服务器

    转自:http://blog.it985.com/8958.html DNS 数据库的记录:正解,反解, Zone 的意义 通过DNS解析过程详解这篇文章,我们知道了要想访问www.zmit.cn,最 ...

  8. Linux 小知识翻译 - 「DNS服务器」

    这次聊聊「DNS服务器」. DNS(Domain Name System)服务器,也被称为域名服务器. 因为使用互联网的时候,必须要指定DNS服务器,所以你一定听过DNS这个名字吧. 那么,这个DNS ...

  9. DNS服务器原理简述、搭建主/从DNS服务器并实现智能解析

    1. TLD:Top Level Domain 顶级域名 组织域:.com, .net, .org, .gov, .edu, .mil 国家域:.iq, .tw, .hk, .jp, .cn, ... ...

  10. Linux下DNS服务器的基本搭建

    技术交流群:286866978 安装与配置 1. 装载光驱 2. 卸载光驱 3. 将安装包放在合适的文件夹并解压(有的更换光盘需要重新装载) 4. 安装 5. 重定向配置文件 6. 配置named.c ...

随机推荐

  1. pyqt5离线安装教程

    目前总结的安装pyqt5,需要的离线安装包,除了每一个包要跟系统版本适配之外,还要考虑包跟包之间的适配.pyqt5跟它开头的一些包要保持是同一个版本,至少有2个小数点的位数是一样的才行,qt5跟它开头 ...

  2. AC间二层漫游

    这个实验没有找到用packet tracer做的例子,故使用ensp,参考了文章: 配置WLAN AC间二层漫游示例 - WLAN V200R008C10 典型配置案例集 - 华为 (huawei.c ...

  3. supervisor+gunicorn+uvicorn部署fastapi项目

    一.编写一个项目 本项目是在虚拟环境下的: 先启动虚拟环境:source .venv/bin/activate.(创建虚拟环境自己去找) 项目用于演示,所以非常简单, 在虚拟环境中安装需要的第三方库: ...

  4. (0319) uvmgen的使用,产生的UVM环境介绍

    qq https://blog.csdn.net/hh199203/article/details/118210541

  5. Delphi 新语法:匿名函数

    这里的新语法一般指Delphi7不支持的语法. 对于比较简单实现,不需要复用,开发者更喜欢在使用时,原地声明,而没有必要单独声明并实现这个方法. 通过关键字reference来定义一个匿名函数. 下面 ...

  6. Cannot add middleware after an application has started

    This helped: Open the Command Prompt or the Windows PowerShell. Navigate to your Stable Diffusion fo ...

  7. java使用MVC编程模型实现1+到100图形界面

    MVC概念 MVC编程模型是可以说从提出到现在经久不败,是一种先进的设计结构.能很好的体现个人分工,从而实现前后端分离. M(Model):模型:存储数据的对象.后端操作数据库的. V(View):视 ...

  8. py09函数简介

    函数的返回值 # def func():# return 'asfjsfda'# res = func()# print(res) # 函数内要想返回给调用者值 必须用关键字return"& ...

  9. OpenLayer——绘制带箭头的线

    绘制带箭头的线,计算相对复杂,多少是有点影响性能了.更简单的做法:初始.目标点用不同的点进行强调即可. <!DOCTYPE html> <html lang="en&quo ...

  10. mysql表关联更新

    UPDATE enterprise_test t1, enterprise_development_relation t2 SET t1.development_area_id = t2.develo ...