构建主从DNS服务器

简介:

                           构建主从DNS服务器

实验背景:


 公司注册了DNS区域tarena.com,准备使用两台RHEL5服务器构建主、从域名系统,其中任何一台都能够解析tarena.com域内的主机地址。


1.主DNS服务器:svr5.tarena.com,192.168.4.5 。


2.从DNS服务器:svr6.tarena.com,192.168.4.6 。


3.负责解析以下站点:


网站:www.tarena.com ? 192.168.4.100

邮件:mail.tarena.com ? 192.168.4.25

FTP:是www的别名

4.为*.tarena.com提供泛域名解析:192.168.4.100 。



实验方案:

 使用2台RHEL 5虚拟机,其中一台作为主DNS服务器(192.168.4.5)、另外一台作为从DNS服务器(192.168.4.6),两台RHEL 5虚拟机及Windows真机都可作为DNS客户机执行测试。


实验实现:

1.认识Linux中的bind域名服务软件包


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


1)安装bind相关的软件包


RHEL 5系统光盘自带了BIND服务的安装文件,主要包括以下软件包:


bind-9.3.6-20.P1.el5_8.5.x86_64.rpm

bind-chroot-9.3.6-20.P1.el5_8.5.x86_64.rpm

bind-libs-9.3.6-20.P1.el5_8.5.x86_64.rpm

bind-utils-9.3.6-20.P1.el5_8.5.x86_64.rpm

caching-nameserver-9.3.6-20.P1.el5_8.5.x86_64.rpm


#rpm -ivh bind-9.3.6-20.P1.el5_8.5.x86_64.rpm bind-chroot-9.3.6-20.P1.el5_8.5.x86_64.rpm caching-nameserver-9.3.6-20.P1.el5_8.5.x86_64.rpm //安装三个软件包

2)了解bind、bind-chroot的配置路径


# rpm -qc bind

/etc/dbus-1/system.d/named.conf /etc/logrotate.d/named /etc/named.conf                     //域名服务主配置文件 /etc/rc.d/init.d/named

/etc/rndc.conf

/etc/rndc.key

/etc/sysconfig/named                 //服务程序named的选项配置文件 /usr/share/dbus-1/services/named.service


# grep "^ROOTDIR" /etc/sysconfig/named //查看真正的配置根目录ROOTDIR=/var/named/chroot

 从上述定义可看出,服务程序named的主配置文件最好存放到/var/named/chroot/etc目录下,文件名为named.conf:


3)

# chkconfig --list named                 //设置服务开机自启动


2.搭建主DNS服务器(192.168.4.5)


1)构建主配置文件named.conf

直接用vim编辑器新建,存放到/var/named/chroot/etc/目录下:

#cd /var/named/chroot/etc

#cp -p named.caching-nameserver.conf named.conf//复制模板,保留权限不变

# vim ./etc/named.conf


2.options {                                 //定义全局选项

3.directory "/var/named";             //区域数据文件的默认存放位置

4.allow-transfer { 192.168.4.6; };     //授权从DNS服务器

5.};

6.zone "tarena.com" IN {                     //定义正向解析区域

7.type master;                         //类型为主区域

8.file "tarena.com.zone";             //本区域的地址数据文件

9.};

10.zone "4.168.192.in-addr.arpa" IN {     //设置反向解析区域(不是必需的,可选)

11.type master;

12.file "192.168.4.arpa";

13.};

2)建立区域地址文件(正向域tarena.com)

直接用vim编辑器新建,存放到/var/named/chroot/var/named/目录下:

#cd ..//回到上一级目录chroot

#cd ./var

#cp named.local tarena.com.zone

#vim /var/named/chroot/var/named/tarena.com.zone

2.$TTL 86400                                 //有效记录的生存周期

3.@ IN SOA tarena.com. admin.tarena.com. ( //@表示当前tarena.com,

admin.tarena.com 表示邮箱,@变成了点.

4.2013101601                                 //更新序号

5.3H                                         //刷新时间

6.15M                                         //重试间隔

7.1W                                         //失效时间

8.1D                                         //无效记录的生存周期

9.)

10.@         IN NS         svr5.tarena.com.         //本域的DNS服务器地址

11.            IN NS         svr6.tarena.com.         //本域的DNS服务器地址

12.            IN MX 10    mail.tarena.com.         //本域的邮件服务器地址

13.            IN A         192.168.4.100             //本域的默认IP地址

14.svr5     IN A         192.168.4.5             //A主机记录

15.svr6     IN A         192.168.4.6

16.www         IN A         192.168.4.100

17.mail        IN A         192.168.4.25

18.ftp         IN CNAME    www                         //CNAME别名记录

19.*         IN A        192.168.4.100             //*泛域名解析

3)建立区域地址文件(反向域4.168.192.in-addr.arpa)

#cp -p tarena.com.zone 192.168.4.arpa

#vim 192.168.4.arpa//这里编辑的还是/var/named/chroot/var/named/192.168.4.arpa


2.$TTL 86400

3.@ IN SOA tarena.com. admin.tarena.com. (

4.2013101601                                 //更新序号

5.3H                                         //刷新时间

6.15M                                         //重试间隔

7.1W                                         //失效时间

8.1D                                         //无效记录的生存周期

9.)

10.@         IN NS svr5.tarena.com.

11.        IN NS svr6.tarena.com.

12.5         IN PTR svr5.tarena.com.

13.6         IN PTR svr6.tarena.com.

14.25         IN PTR mail.tarena.com.

15.100         IN PTR www.tarena.com.//反向解析

4)检查配置文件是否正确



# named-checkconf etc/named.conf //没有错误不提示

# named-checkzone tarena.com var/named/tarena.com.zone //没有错误提示ok

# named-checkzone 4.168.192.in-addr.arpa var/named/192.168.4.arpa

5)启动named服务,并在本机测试DNS解析是否符合预期



# service named restart                 //重启named服务

# vim /etc/resolv.conf //修改本机的DNS设置文件:


nameserver 192.168.4.5                             //首选DNS指向主DNS服务器

测试正向解析,都与预期的结果一致:

1.[root@svr5 ~]# host svr5.tarena.com

2.svr5.tarena.com has address 192.168.4.5

3.[root@svr5 ~]# host svr6.tarena.com

4.svr6.tarena.com has address 192.168.4.6

5.[root@svr5 ~]# host mail.tarena.com

6.mail.tarena.com has address 192.168.4.25

7.[root@svr5 ~]# host www.tarena.com

8.www.tarena.com has address 192.168.4.100


测试反向解析(抽查),也都与预期的结果一致:

1.[root@svr5 ~]# host 192.168.4.5

2.5.4.168.192.in-addr.arpa domain name pointer svr5.tarena.com.

3.[root@svr5 ~]# host 192.168.4.25

4.25.4.168.192.in-addr.arpa domain name pointer mail.tarena.com.



测试泛域名解析(查询几个不存在的域名),也都正确给出结果:


1.[root@svr5 ~]# host abc.tarena.com

2.abc.tarena.com has address 192.168.4.100

3.[root@svr5 ~]# host xxyyzz.tarena.com

4.xxyyzz.tarena.com has address 192.168.4.100



3.搭建从DNS服务器(192.168.4.5)


1)构建主配置文件named.conf

在从DNS服务器上,主配置文件named.conf的内容大部分与主DNS服务器上相同,因此只要复制过来稍加改动即可,建议采用scp远程复制:

# cd /var/named/chroot/etc/     //切换到主配置目录

# scp root@192.168.4.5:/var/named/chroot/etc/named.conf ./

//远程复制,保留到当前目录下


2)  对复制过来的named.conf进行修改——去掉主DNS配置的allow-transfer授权,将正、反向区域的类型改为slave,并添加masters配置指定主DNS服务器:


# vim /var/named/chroot/etc/named.conf


2.options {

3.directory "/var/named";

4.#allow-transfer { 192.168.4.6; };         //移除此行授权配置

5.};

6.zone "tarena.com" IN {

7.type slave;                                 //区域类型改为slave

8.file "slaves/tarena.com.zone";             //改为保存到slaves/子目录下

9.masters { 192.168.4.5; };                 //指定主DNS服务器的地址

10.};

11.zone "4.168.192.in-addr.arpa" IN {

12.type slave;                                 //区域类型改为slave

13.file "slaves/192.168.4.arpa";             //指定主DNS服务器的地址

14.masters { 192.168.4.5; };                 //改为保存到slaves/子目录下

15.};

 因为named服务程序的默认运行身份是named用户,当从DNS服务器自动从主DNS服务器下载区域地址数据文件后,需要有本地写入权限才能保存成功。默认情况下,子目录是专为主从同步准备的,named用户有权限写入:这里的权限错误页容易出错,需要注意


2)建立区域地址文件

对于从DNS服务器来说,此步骤不需要做(因为会自动从主DNS服务器下载)。

在从DNS服务器的named服务未启动之前,没有(也不需要有)区域地址文件:


3)启动named服务,确认已成功从主DNS服务器下载区域地址文件


# service named restart                 //重启named服务

 检查slaves/目录,可发现已自动下载正、反向区域地址文件:


#ls -l /var/named/chroot/var/named/slaves/


 如果前面忘记将存放位置改成slaves/目录下,则极可能因为无权限写入而导致区域文件下载失败,此时检查从DNS的日志应发现类似下列的提示:

dumping master file: tmp-MoaX2hDvPO: open: permission denied                                     //导出文件到本地时被拒绝

Oct 16 15:54:39 svr6 named[16371]: transfer of 'tarena.com/IN' from 192.168.4.5#

53: failed while receiving responses: permission denied

                                               //最终反馈:访问被拒绝


 只要修正存放位置或解决named用户的写入权限问题,故障就会解决了。


4)在从DNS服务器本机测试DNS解析是否符合预期


  测试操作与前面类似,使用host或nslookup都可以。

修改本机的DNS设置文件:


# vim /etc/resolv.conf //此处容易忘记修改从服务器的dns配置文件,不修改时解析不出来的

抽查正向解析,与预期结果一致:


1.[root@svr6 ~]# host www.tarena.com

2.www.tarena.com has address 192.168.4.100

3.[root@svr6 ~]# host svr5.tarena.com

4.svr5.tarena.com has address 192.168.4.5

抽查反向解析,与预期结果一致:

1.[root@svr6 ~]# host 192.168.4.5

2.5.4.168.192.in-addr.arpa domain name pointer svr5.tarena.com.

3.[root@svr6 ~]# host 192.168.4.25

4.25.4.168.192.in-addr.arpa domain name pointer mail.tarena.com.



测试泛域名解析,也能正确得出结果(192.168.4.100):

1.[root@svr6 ~]# host abc.tarena.com

2.abc.tarena.com has address 192.168.4.100

3.[root@svr6 ~]# host xxyyzz.tarena.com

4.xxyyzz.tarena.com has address 192.168.4.100



4.主、从DNS解析整体测试


1)修改客户机的DNS服务器指向


在主机192.168.4.5上,指定首选、辅助DNS服务器:

# vim /etc/resolv.conf

2.search localdomain

3.nameserver 192.168.4.5                             //首选DNS服务器

4.nameserver 192.168.4.6                             //辅助DNS服务器

在主机192.168.4.5上,也指定首选、辅助DNS服务器:

1.[root@svr6 ~]# vim /etc/resolv.conf

2.search localdomain

3.nameserver 192.168.4.6                             //首选DNS服务器

4.nameserver 192.168.4.5                             //辅助DNS服务器






实验总结:


1  此实验中尤其需要注意路径,本实验的各种路径都是在/var/named/chroot/下的var和etc目录下操作的

,在切换路径的时候习惯性的在前面加上/ ,这样就切换到根下了,是不正确的。

2  正向解析式最后的tarena.com. 后面的.不要忘记  


3  要解析出dns服务器,还不要忘记修改/etc/resolve.conf文件,添加本机的namesearch


4  如果还是解析不出来,可以查看/var/log/message 查看日志,日志中有的会提醒...denied 表示文件的  属性改变了,配置文件和区域配置文件的所属组应该是named,查看这几个文件的权限,如果是boot该为 named

例:chgrp named /var/named/chroot/etc/named.conf

 chgrp named /var/named/chroot/var/named/tarena.com.zone

chgrp named /var/named/chroot/etc/192.168.4.arpa

5 named.conf 的检查命令是:named-checkconf ./etc/named.conf

 区域文件的检查命令是: named-checkzone tarena.com ./var/named/tarena.com.zone

named-checkzone tarena.com ./var/named/192.168.4.arpa

 每次配置完,用检查命令接着检查下,刚刚配置的是否正确

6。在设置别名的时候,IN之后的A改为CNAME,去掉A不要保留着,这里自己容易忘记删除A

7.从dns服务器要想从主服务器上获取信息,首先要保证他们2个之间是能ping通的,解析不出也有可能是2个服务器之间不能ping通


8.在编辑各个配置文件的时候要注意标点符号的遗漏,像; ,在}外有;,不要遗漏

9 要学会用日志来检查出错信息,要留意出错时的错误提示信息,根据提示信息去找出错误并改正。


10 DNS使用端口  tcp/udp 53


11DNS负载均衡--同一个域名对应多个ip地址

12泛域名解析中有规律时的设置:

$GENERATE 1-200 station$ IN192.168.4.$//正向解析

$GENERATE 1-200$INAstation$.tarena.com.//反向解析




      本文转自Jx战壕  51CTO博客,原文链接:http://blog.51cto.com/xujpxm/1370848,如需转载请自行联系原作者


相关文章
|
4月前
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
913 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
|
2月前
|
存储 域名解析 弹性计算
阿里云上云流程参考:云服务器+域名+备案+域名解析绑定,全流程图文详解
对于初次通过阿里云完成上云的企业和个人用户来说,很多用户不仅是需要选购云服务器,同时还需要注册域名以及完成备案和域名的解析相关流程,从而实现网站的上线。本文将以上云操作流程为核心,结合阿里云的活动政策与用户系统梳理云服务器选购、域名注册、备案申请及域名绑定四大关键环节,以供用户完成线上业务部署做出参考。
|
3月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
768 1
|
4月前
|
网络协议
利用Private Zone DNS - 搭建AD但不搭建DNS服务器如何加域
利用Private Zone DNS - 搭建AD但不搭建DNS服务器如何加域
利用Private Zone DNS - 搭建AD但不搭建DNS服务器如何加域
|
3月前
|
人工智能 JavaScript 前端开发
用 Go 语言轻松构建 MCP 服务器
本文介绍了使用 Go 语言构建 MCP 服务器的完整过程,涵盖创建服务器实例、注册工具、资源和提示词,以及通过 stdio 和 sse 模式启动服务的方法,帮助开发者快速集成 LLM 应用与外部系统。
|
5月前
|
监控 Ubuntu 安全
Ubuntu系统下构建FTP服务器的步骤
记住,时不时的巡视(监控)农场,更新工具(软件和安全性更新),以及恰当的维护同样重要,这样你的FTP农场才能长久繁荣。
110 4
|
8月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
838 29
|
8月前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
338 4
|
8月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~