自己动手搭建DNS服务器
前言:
在我们平时上网中,访问的都是域名,那么域名是如何转换为IP地址的呢?进而访问我们的服务器主机的呢?这时候就需要用到DNS服务器了。DNS是由域名解析器和域名服务器组成的,域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。
那么接下就开始搭建DNS服务器吧!
1.首先搭建主DNS服务器,ch1主机配置如下:
[root@ch1 ~]# yum -y install bind ## 安装bind程序 [root@ch1 ~]# ntpdate 172.18.0.1 ## 同步时间服务器 [root@ch1 ~]# vim /etc/named.conf ## 修改DNS服务器配置文件
[root@ch1 ~]# named-checkconf ## 检查配置文件语法错误 [root@ch1 ~]# vim /etc/named.rfc1912.zones ## 在此配置文件中添加区域
[root@ch1 ~]# vim /var/named/test.com.zone ##在/var/named目录下建立区域数据文件
[root@ch1 named]# vim /var/named/172.18.20.zone ## 建立反向解析区域数据文件
[root@ch1 ~]# chown :named /var/named/test.com.zone ## 修改属组为named [root@ch1 ~]# chmod o= /var/named/test.com.zone ## 移除其他的权限 [root@ch1 named]# named-checkzone test.com /var/named/test.com.zone ## 检测区域文件语法错误 [root@ch1 named]# named-checkzone 20.18.172.in-addr.arpa /var/named/172.18.20.zone [root@ch1 named]# service named start ## 启动DNS服务 [root@ch1 named]# dig -t A www.test.com @172.18.20.10 ## 测试DNS服务器172.18.20.10是否能正常解析A记录 [root@ch1 named]# dig -x 172.18.20.11 @172.18.20.10 ## 测试DNS服务器172.18.20.10是否能反向解析172.18.20.11
主DNS服务器搭建完毕
2.搭建从DNS服务器,ch2配置如下
[root@ch2 ~]# yum -y install bind ## 安装bind程序 [root@ch2 ~]# ntpdate 172.18.0.1 ## 同步时间服务器 [root@ch2 ~]# vim /etc/named.rfc1912.zones ## 定义一个从区域
[root@ch2 ~]# named-checkconf ## 检查语法错误 [root@ch2 ~]# service named start ## 启动DNS服务 [root@ch2 slaves]# cat test.com.zone ## 查看区域配置文件是否能够同步
注意:要在主DNS服务器上配置一条指向从DNS服务器的NS记录
3.配置子域
[root@ch3 ~]# yum -y install bind ## 安装bind程序 [root@ch3 ~]# ntpdate 172.18.0.1 ## 同步时间服务器 [root@ch3 ~]# vim /etc/named.conf ## 修改配置文件
[root@ch3 ~]# vim /etc/named.rfc1912.zones ## 建立区域配置
[root@ch3 ~]# vim /var/named/ops.test.com.zone ## 建立区域配置文件
[root@ch3 ~]# named-checkconf ## 检查语法是否错误 [root@ch3 ~]# service named start ## 启动服务 [root@ch3 ~]# dig -t A www.ops.test.com @172.18.20.12 ## 测试子域是否能够正常解析 [root@ch3 ~]# dig -t A www.test.com @172.18.20.12 ## 测试子域是否能够解析父域
注意:子域同样需要主DNS服务器上的授权
总结:
1. DNS是应用层协议,端口号为tcp/53和udp/53
2. DNS查询的过程
(1)客户机将查询www.test.com的信息传递到自己的首选DNS服务器。
(2)DNS客户机的首选DNS服务器检查区域数据库,由于此服务器没有test.com域的授权记 录,因此,它将查询信息传递到根域DNS服务器,请求解析主机名称。
(3)根域DNS服务器把负责解析“com”顶级域的DNS服务器的IP地址返回给DNS客户机的首选 DNS服务器。
(4)首选DNS服务器将请求发送给负责“com”域的DNS服务器。
(5)负责“com”域的服务器根据请求将负责“test.com”域的DNS服务器的IP地址返回给首 选DNS服务器。
(6)首选DNS服务器向负责“test.com”区域的DNS服务器发送请求。
(7)由于此服务器具有www.test.com的记录,因此它将www.test.com 的IP地址返回给首 选DNS 服务器。
(8)客户机的首选DNS服务器将www.test.com的IP 地址发送给客户机。
(9)域名解析成功后,客户机将http请求发送给Web服务器。
(10)Web服务器响应客户机的访问请求,客户机便可以访问目标主机。
3. DNS服务器类型
主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;
从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但 只能进行读操作;
4. DNS区域数据库文件常见类型
SOA:起始授权记录; 一个区域解析库有且只能有一个SOA记录
NS:域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
A: 地址记录,FQDN --> IPv4;
AAAA:地址记录, FQDN --> IPv6;
CNAME:别名记录;
PTR:Pointer,IP --> FQDN
MX:Mail eXchanger,邮件交换器;
5. DNS的配置文件
主配置文件:/etc/named.conf
或包含"include"设定的其它文件;
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
解析库文件:
/var/named/目录下;
一般名字为:ZONE_NAME.zone
6. DNS测试工具
dig命令:
dig [-t RR_TYPE] name [@SERVER] [query options]
用于测试dns系统,因此其不会查询hosts文件;
查询选项:
+[no]trace:跟踪解析过程;
+[no]recurse:进行递归解析;
反向解析测试: dig -x IP
模拟完全区域传送: dig -t axfr DOMAIN [@server]
7. DNS中的安全相关的配置
访问控制指令:
allow-query { }; 允许查询的主机;白名单;
allow-transfer { }; 允许向哪些主机做区域传送;默认为向所有主机;
allow-recursion { }; 允许哪此主机向当前DNS服务器发起递归查询请求;
allow-update { }; DDNS,允许动态更新区域数据库文件中内容;

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
在实践中深入理解ARP协议
0.说明 本文为我个人计划撰写的博客专题《在实践中深入理解常见网络协议》中关于ARP协议的一篇, 有兴趣的朋友可以继续关注我的博客,我将会陆续撰写各种协议的实践分析文章。 在同一个网络(无特别说明,均指以太网络)中进行通信的主机,必须要拥有目标主机的MAC地址才能够正确地将数据发送给目标主机,那么如何知道目标主机的MAC地址呢?可以通过ARP协议。ARP协议就是用来获取目标IP地址所对应的MAC地址的,也就是说,ARP协议可以动态地在三层IP地址和二层MAC地址之间建立一种映射关系。可以用如下示意图来形象表示其作用: 可以看到上面的图示是把ARP协议划分到网络层,也既是认为它是一个网络层的协议,这是出于它为网络层的IP协议提供服务而考虑的。但实际上,由于ARP协议用以解析出IP地址(逻辑地址)所对应数据链路层中的地址(物理地址/硬件地址),所以把其划分在数据链路层也是没有问题的,这并没有严格的定义。 我们下面将通过具体的实践过程来分析四种常见的ARP包:ARP请求包、ARP响应包、无偿ARP包与IP地址冲突检测,同时也会分析一下ARP代理的发生过程。 这里会使用的环境如下: 网...
- 下一篇
Python回顾与整理8:错误和异常
0.说明 如果想写出用户体验高的代码,那么就需要考虑到在执行自己写的这段代码中在和用户交互的过程中可能会出现的问题,也就是说,需要对可能出现的异常进行处理,只有做好这些工作,才能写出用户体验好的代码。 1.什么是异常 错误 错误是语法(导致解释器无法解释)或逻辑(也就是代码质量问题)上的,在Python中,当检测到错误时,解释器会指出当前流无法继续执行下去,于是就出现了异常。 异常 程序出现了错误而在正常控制流以外采取的行为。 根据上面的解释,可以理解为,只要解释器检测到程序运行时出现了错误(与Python解释器不相容而导致),就会触发一个异常。 2.Python中的异常 如下: 异常类型 描述 简单例子 NameError 尝试访问一个未声明的变量,或者是在名称空间中不存在的变量 >>>xpleaf Traceback(mostrecentcalllast): File"<stdin>",line1,in<module> NameError:name'xpleaf'isnotdefined ZeroDivisionError 除数为零 >...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- 设置Eclipse缩进为4个空格,增强代码规范