首先我们需要知道一些原理:

dns服务器有主和从,主服务器发生变化,从服务器会自动同步

上网时我们输入的网址,比如说www.EXAMLE.com,其写全应该是www.EXAMPLE.com.,com后有个.,代表着根域,dns结构中一个网址结构是

.

根域

com

顶级域/一级域

EXAMPLE

二级域

www

主机名

如果是www.EXAMLE.com.cn结构,一级域为cn,二级域为com,三级域是EXAMPLE,主机名是www

当用户访问一个之前从未访问的网站时,会去查找本地dns的缓存有没有该域名对应的ip,如果没有,将会从根域查询起。

比如说访问www.baidu.com,其实是访问www.baidu.com.

(1)查询至根域:你知不知道我这个网址的ip呀,根域回复“不知道,不过我知道你的com域在哪,它是我的子域,你去找它吧”(注:这种dns无法将结果交给用户,不过可以将访问推荐到下级dns服务器的查询,称作迭代查询)

(2)查询至com域:你知不知道我这个网址的ip呀,com域回复“不知道,但我知道你的baidu二级域在哪,它是我的子域,你去找它吧”(注:迭代查询)

(3)查询至二级域:你知不知道我这个网址的ip呀,二级域回复“知道呀,来我把它告诉你”(注:这种dns将最终结果交给用户,称作递归查询)

之后dns解析的记录会存放到本地dns服务器,这个本地dns服务器我们可以理解为小区的网络运营商dns服务器,再有其它主机访问该网址,就可以直接去访问该ip

知道这个概念,我们便画逻辑图,构建dns结构

1、画出逻辑结构图

本人实验时候主机分配计划和ip

centos7 test:客户机,ip 192.168.239.70

centos7-1:本地dns主服务器,ip 192.168.239.71

centos7-3:二级域主服务器,ip 192.168.239.73

centos6 test:二级域从服务器,ip 192.168.239.60

centos6-1:一级域服务器,ip 192.168.239.61

centos6-2:根域服务器,ip 192.168.239.62

centos:目标网站,ip 192.168.239.200

实际实验中将以.tech作为一级域名测试

实验中可能会用到的检查指令:

主配置文件语法检查:named-checkconf

解析库文件语法检查:named-checkzone "chenux.tech" /var/named/chenux.tech.zone

rndc status|reload ;service named reload

2、给计划作为dns服务器的主机安装bind,dns的服务名为named.service

3、目标网址安装httpd服务,建立/var/www/html/index.html,写入内容

4、为保险起见,我们一步一步按照图从下向上实现,首先从二级域开始配置

翻页至最下方,可以看到一路径

编辑该文件,内容可以按照下面的格式写入

进入/var/named目录,编辑chenux.tech.zone主区域

建立好后,需要注意一点

重启服务,systemctl restart named,测试结果

5、配置二级域从服务器

配置和主服务器稍有不同,下图标有两处不同

第一处:/etc/named.conf

第二处:/etc/named.rfc1912.zones

更改完后重启服务,/var/named/slaves目录下会自动生成*.zone

测试

6、搭建一级域dns

/etc/named.conf文件不变

/etc/named.rfc1912.zone

主区域文件改名为/var/named/tech.zone

重启后测试

此时如果成功,将二级域DNS主服务器网络断开,清除一级域dns服务器缓存,rndc flush,测试机dig www.chenux.tech @192.168.239.60(二级域DNS从服务器)依旧正常

7、搭建根域dns服务器

vim /etc/named.conf,最下方有一个zone ".",将它们全部注释

vim /etc/named.rfc1912.zones

vim /var/named/root.zone

重启服务,测试正常

8、建立本地dns服务器

vim /etc/named.conf 两个选项注释,并且将这两项改为no,否则无法进行dns转发

vim /var/named/named.ca

重启服务

9、更改测试机192.168.239.70的网卡信息,重启服务后查看dns已经变化

此时dig网址www.chenux.tech便已经成功

curl www.chenunx.tech的结果

总结:dns修改/etc/named.conf(注释两条,有从服务器allow-trasfer {允许连接的主机ip})

/etc/named.rft1912.zone,zone "*.com" {

type master/slave;

file "*.com.zone";或者file "slaves/*.com.zone"};

新建/var/named/*.zone,(从服务器会自动生成)

$TTL 86400

@ IN SOA dnsserver admin (版本 1D 1H 1W 3H )

NS   dnsserver

NS  dnsserver2    子域  NS  dnsserver2

dnsserver   A 本机ip

dnsserver2 A 子域ip

转载于:https://blog.51cto.com/13873498/2286294

Linux环境下实现简易的DNS域名解析过程相关推荐

  1. 超详细:实现过程-Linux 环境下的简易聊天室,采用CS模型,实现多客户端之间的稳定数据传输。--注册和登录(但之后会连续更新内容,直至全部实现)

    前言 在学完不够全面的Linux操作系统编程后(这也意味着我后期也要不断学习,这也符合我活到老学到老的人生观点),需要以一些项目来检测自己的所学,毕竟实践见真章. 所以在今后的几天里,我将以无界面聊天 ...

  2. 2021.10.02超详细实现过程-Linux 环境下的简易聊天室,采用CS模型,实现多客户端之间的稳定数据传输。(添加好友,删除好友、屏蔽好友、查看好友列表(针对数据库的操作))

    这次主要对加好友.删除好友.屏蔽好友.查看好友列表功能(单纯的基于数据库操作),并且也对之前的代码做了部分的改动,为中间涉及全局变量问题. 对之前的改动(主要): 其中对结构体进行了改动和结构体全局变 ...

  3. linux 环境下安装oracle11g方法及安装过程中遇上的问题解决方法

     Oralce安装教程 1.先安装需要的依赖包 找到哪个没有安装,直接yum install XX,直到所有的都安装完成.注意,可能一个包安装了,再次执行检查,还是提示没有安装,那么就不需要管他们了, ...

  4. Linux 环境下安装 GitLab 与配置

    什么是 GitLab? GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务. GitLab的功能特点 提供了管理,计划,创建,验证,打 ...

  5. Linux环境下的网络编程

    本文介绍了在Linux环境下的socket编程常用函数用法及socket编程的一般规则和客户/服务器模型的编程应注意的事项和常遇问题的解决方法,并举了具体代  码实例.要理解本文所谈的技术问题需要读者 ...

  6. Linux环境下查看IP不显示IPv4地址

    Linux环境下查看IP不显示IPv4地址 问题 解决方法 额外方法 后续 问题 这篇文章记录一下,当我在虚拟机下运行Ubuntu时,想在我的windows下通过putty连接到Linux系统,但发现 ...

  7. Linux环境下查看网络性能的基本命令

                     Linux环境下查看网络性能的基本命令 由于Linux经常使用的是字符界面,而且Linux的功能比较强大,具有默认路由功能,相当于网关和路由器.在网络性能方面也比较稳 ...

  8. 【OS】Linux环境下配置固定IP地址--静态IP地址(不能上外网问题)

    [OS]Linux环境下配置固定IP地址--静态IP地址(不能上外网问题) ---red hat重启网卡 service network restart /etc/rc.d/init.d/networ ...

  9. linux svn更换数据仓库,Linux环境下SVN数据仓库迁移

    上一篇文章介绍了Windows环境下SVN数据的备份与还原,这篇文章介绍下Linux环境下数据迁移. 一准备工作 1安装环境 1 centOS7 2可上网 2软件需求 1 winSCP 2 PuTTy ...

  10. LINUX环境下资源下载中文目录及中文文件名称问题

    为什么80%的码农都做不了架构师?>>>    http://www.yeeach.com/2009/04/09/linux%E7%8E%AF%E5%A2%83%E4%B8%8B%E ...

最新文章

  1. 开源游戏机java模拟器_最棒的 7 款开源终端模拟器
  2. Class.forName解析以及使用
  3. Android短信验证
  4. SpringBoot 项目模板:摆脱步步搭建
  5. c语言,如何产生随机数
  6. codepage IMLangCodePages
  7. matlab图像隐写,matlab软件图像处理相关内容.ppt
  8. 进程和线程的联系和区别
  9. 20191226_1_淘宝口红商品分析
  10. 顺序锁(seqlock)
  11. 在endnote中制作GB/T7714《文后参考文献著录规则》的输出格式 及 编辑Output Styles中特殊符号说明
  12. 狐狸找兔子 ← C语言实现
  13. 几个名词解释 TBB VPP KKK
  14. Layer 开启与关闭加载层
  15. android 文本倒影,Android 生成倒影图片
  16. 不小心删除了华为手机备忘录里的内容如何恢复?
  17. 贾扬清担任阿里开源技术委员会负责人,开源升级为阿里技术战略之一
  18. Java异常处理最佳实践及陷阱防范
  19. 《千与千寻》高清下载
  20. Python第一阶段学习 day14

热门文章

  1. 【转】高性能服务器架构(High-Performance Server Architecture)
  2. Windows7 64位系统搭建Cocos2d-x 2.2.1最新版以及Android交叉编译环境(具体教程)
  3. 使用IdleTest进行TDD单元测试驱动开发演练(3) 之 ASP.NET MVC
  4. 请教高手,如何取得Target属性
  5. 关于智能制造的思考——以中航工业为例
  6. 编程语言(C语言,JAVA),程序设计,APP开发,算法
  7. AOJ-776 马的走法 动态规划
  8. 智能优化算法应用:基于麻雀搜索算法与双伽马校正的图像自适应增强算法 - 附代码
  9. 智能优化算法:鲸鱼优化算法-附代码
  10. 交叉验证与训练集、验证集、测试集