本帖最后由 无赖叫兽 于 2022-9-16 16:52 编辑
一、前言
DNS(Domain Name System)是因特网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,如果一个企业内网有自己的DNS的话,在安全和管理方面都能很方便,比如安全溯源或是部署LDAP都需要DNS。我发现大多数企业用的都是微软windows部署的DNS和AD域,我个人感觉windows系统不大稳定,安全漏洞也过多,往往过段时间就需要重起系统,而且里面的有些逻辑我感觉不是很能理解,自己以前看教程觉得linux打造DNS服务器就非常稳定,而且软件都是开源的,如果要部署域,为何不考虑centos+DNS+openldap的模式呢? 下面就分享一下我2018年在自己电脑的虚拟机上模拟主辅DNS部署的情况,并且经测试,内网用这个DNS均能上网。
二、模拟环境
台式机一台,当时配置为酷睿i5,16G内存,硬盘1T,并且已连网; Vmware workstation 11已安装,两台虚拟机网卡模式为桥接; 台式机操作系统为win7,两台虚拟机操作系统为centos6.8
三、单主DNS部署
3.1 正向解析
在虚拟机主上安装所需软件 yum安装bind和bind-chroot和bind-util bind-chroot软件可以使bind在一个chroot的模式下运行.也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已.这样做的目的是为了提高安全性。 进入/etc目录下 查看 #ls named*
bind运行时会把/var/named/chroot当作根/,由上图我们可以看出现在的配置文件全部在真实的根下面,所以我们应该将这些以named打头的文件拷贝到/var/named/chroot底下。 #cp -a named* /var/named/chroot/etc 另外,dns会认为它的工作目录是/var/named,但是做了 chroot,所以它的实际工作目录应当是 /var/named/chroot/var/named;同理,我们也将/var/named的所有文件拷贝到/var/named/chroot/var/named底下去。 #cd /var/named #ls #cp -a data/ dynamic/ named* slaves/ chroot/var/named/ 接下来 #cd etc #vim named.conf 编辑配置文件:
保存。 再在/var/named底下新建这个叫hems.com.zone的文件,实际路径为/var/named/chroot/var/named,
编辑它:
修改hems.com.zone所属组为named,权限为640。
在防火墙里开放tcp53和udp53端口,启动named服务,提示要一个key,centos6上要运行个命令: #rndc-confgen -r /dev/urandom -a 提示生成后,重启域名服务。 修改自己域名为127.0.0.1 #vim /etc/resolve.conf上面增加一行 namesevet 127.0.0.1 保存退出。 运行host -l hems.com检查一下,好了。
3.2 反向解析
修改配置文件/var/named/chroot/etc/named.conf
就是加上一个zone,网段的倒写,41.168.192.in-addr.arpa 保存,在新建修改上面指定的hems.com.arpa
先删除里面所有的A记录;
保存,重启服务; 验证一下: #host -l 41.168.192.in-addr.arpa 测试可以。
也可在最上面以加入变量批量生成 正向里: $GENERATE 1-100 station$ A 192.168.41.$ 反向里: $GENERATE 1-100 $ PTR station$.hems.com. 抓一下包: #tcpdump -i eth0 port 53
四、主辅DNS 打开另一台虚拟机,装上bind,bind-util,bind-chroot,步骤同前面,配置name.conf
主DNS的配置文件也要设置一下,不然会向所有的电脑发送辅dns认证
加上allow-transfer的一行,如上图所示。
注意: 要加上自己,不然自己就解析不到自己了!
重启两边域名服务。 slave这边也要生成一下key: #rndc-confgen -r /dev/urandom -a 重启服务就学到主DNS的配置了。 可以把其他PC再加一个这个辅DNS,这样即使主dns宕机,其他所有电脑网络解析也不会有影响。 五、主辅DNS验证 如果有人再拿一台电脑配置和这台辅DNS一样的ip,那不是也能学习到这里面的数据了吗?
下面引入密钥加密:
主DNS上使用命令生成密钥: #dnssec-keygen -a HMAC-MD5 -b 128 -n HOST xx 生成密钥
主DNS端named.conf加入配置:
密码从上面复制得来,allow-transfer后面加上key就更安全了,保存,重启域名服务。
注意:在这里也要加上自己的,allow transfer后面加上自己的ip,dns的三行也不用注释,密钥用双引号引用好一点。
再到辅DNS这边,先删除slaves底下的ss.zone和ss.arpa,再编辑它的named.conf的配置文件,加上key和密钥:
dns的三行也不用注释,secret的最好密钥用双引号引起来,不然有时候碰到怪异密码时会报错。 保存,重启域名服务。
注意:主辅服务器都要在网卡设置里加上这两个dns;主服务器里zone和反向zone里的序列号一定要大于从服务器的,可以回头手工修改一下。 如果想主服务器重启服务,辅服务器立马更新的话可以加入notify通知
还有,就是如果公司用这个自己设置的域名怎么能上外网呢?
在这里可以加入域转发功能,凡是不认识的都丢给电信的或网通的主dns来解析,这样就可以用我们私有的dns上外网了。 我们在主从服务器的named.conf全局设置里都加上这样的代码:
218.2.135.1是江苏电信的DNS。 六、总结 DNS在linux下的部署大致是这样的,网上的教程可能有引起关键点没加进去,导致配置时候经常报错,记得我当时有试了几多次最后查了很多资料才弄好的。这是2018年弄的,一直保存在我的手机备忘录里,里面的不少图都是用手机拍的照片,可能有些不太清楚,大家可以在部署linux版DNS的时候做个借鉴吧。 |