Linux DNS原理及主从DNS配置

DNS原理及主从DNS配置

  • 1. DNS原理
    • 1.1 简介
    • 1.2 DNS的域名解析过程
    • 1.3 用户使用浏览器输入网址时域名解析过程:
    • 1.4 解析答案
  • 2. 搭建DNS主-辅助服务
    • 2.1 服务器信息
    • 2.2 准备工作
      • 2.2.1 关闭selinux,防火墙
      • 2.2.2 两台服务器互相免密
      • 2.2.3 配置yum仓库
    • 2.3 bind服务安装
  • 3. Master DNS配置
    • 3.1 配置文件
    • 3.2 Master主配置文件(/etc/named.conf)
    • 3.3 解析库文件配置(/var/named/intra.cn.zone)
    • 3.4 主配置文件(/etc/named.rfc1912.zones)
    • 3.5 跳转配置(/etc/lbo.zone)
  • 4.Slave DNS配置
    • 4.1 主配置文件(/etc/named.rfc1912.zones)
  • 5.补充部分
    • 5.1 从其他DNS上同步记录
    • 5.2 维护脚本
      • 5.2.1 备份脚本
      • 5.2.2 同步脚本

1. DNS原理

1.1 简介

DNS(Domain Name Service的缩写)的作用就是根据域名查出IP地址。IP地址是由32位二进制数字组成,人们很难记住这些IP,相反,大家愿意使用比较容易记忆的主机名字。而电脑在处理IP数据报文时,是使用IP地址的,因为它是固定长度。
DNS查询的类型对于客户端来说是递归查询,对于DNS服务器来说,绝大多数是迭代查询的。DNS名称解析中,从名称到IP的查询叫做正向解析,而从IP到名称的查询叫做反向解析。如果DNS服务器至少解析了一个或一个以上的域叫做DNS主服务器或者DNS辅助服务器,如果不负责任何解析叫做DNS缓存服务器。
现在互联网规模很大,DNS被设计成一个分布式的数据库系统,他分布的功能就是把一个大的数据库切割成很多小的数据库,来分别提供一部分数据的处理。全球一共分布了13台DNS根服务器,名字为A至M。

1.2 DNS的域名解析过程

在这里插入图片描述

1.3 用户使用浏览器输入网址时域名解析过程:

客户访问时,先查自己的hosts文件,有则返回
客户hosts中没有就去查自己的缓存,有则返回
客户缓存没有就去找dns服务器
dns服务器先找根服务器获得顶级域服务器地址
dns服务器在找顶级域服务器去获得二级域服务器地址
dns服务器从二级域服务器获得最终的IP地址
客户端从dns服务器中得到IP地址

1.4 解析答案

肯定答案:存在对应的查询结果
否定答案:请求的条目不存在等原因导致无法返回结果
权威答案:直接由存有此查询结果的DNS服务器(权威服务器)返回的答案
非权威答案:由其它非权威服务器返回的查询答案

2. 搭建DNS主-辅助服务

2.1 服务器信息

服务器名IP地址角色
dns01192.168.31.66主DNS
dns02192.168.31.67辅助DNS

2.2 准备工作

2.2.1 关闭selinux,防火墙

setenforce 0
systemctl disable --now firewalld

2.2.2 两台服务器互相免密

## DNS1
ssh-keygen
ssh-copy-id 192.168.31.67
## DNS2
ssh-keygen
ssh-copy-id 192.168.31.66

在这里插入图片描述

2.2.3 配置yum仓库

此处省略yum配置具体内容,需要详细攻落请跳转

[root@dns01 ~]#cat /etc/yum.repos.d/centos.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://192.168.31.200/centos7
enabled=1
gpgcheck=0

2.3 bind服务安装

yum install bind bind-utils -y

在这里插入图片描述

3. Master DNS配置

3.1 配置文件

作用文件名
BIND主程序/usr/sbin/named
服务脚本和Unit名称/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.service
主配置文件/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
管理工具/usr/sbin/rndc:remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程,提供辅助性的管理功能;953/tcp
解析库文件/var/named/ZONE_NAME.ZONE

3.2 Master主配置文件(/etc/named.conf)

options {listen-on port 53 { any; };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";recursing-file  "/var/named/data/named.recursing";secroots-file   "/var/named/data/named.secroots";allow-query     { any; };recursion yes;dnssec-enable no;dnssec-validation no;pid-file "/run/named/named.pid";session-keyfile "/run/named/session.key";
};logging {channel default_debug {file "data/named.run";severity dynamic;};
};zone "." IN {type hint;file "named.ca";
};include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
include "/etc/lbo.zone";

3.3 解析库文件配置(/var/named/intra.cn.zone)

$TTL 1d
@	IN 	SOA	ns1.intra.cn.	Q.cn.com. (     ;SOA记录2021083002						;序列号1H								;刷新时间5M								;重试时间1W								;过期时间1D)								;否定答案的TTL值IN	NS	ns1.intra.cn.					;DNS1IN	NS	ns2.intra.cn.					;DNS2
ns1	IN	A	192.168.31.55
ns2	IN	A	192.168.31.56
ris.intra.cn. 43200   IN      A       192.168.31.217
pcnes.intra.cn. 43200 IN      A       192.168.31.58
onecsm.intra.cn. 43200 IN     A       192.168.31.160
cna-cifs-sh.intra.cn. 43200 IN A      192.168.31.20
attendance1.intra.cn. 43200 IN A      192.168.31.159
SSO1.intra.cn. 43200  IN      A       192.168.31.64
eshop.intra.cn. 43200 IN      A       192.168.31.88
attendance2.intra.cn. 43200 IN A      192.168.31.122
pehs.intra.cn. 43200  IN      A       192.168.31.151

DNS区域数据库文件
资源记录(Resource Record)的类型有以下几个

记录名作用
*SOA起始授权记录,只能有一个,必须放在第一条
NS域名服务记录,其中一个为主,可以有多个
AIPv4地址记录
AAAAIPv6地址记录
CNAME别名记录
PTR反向解析记录
MX邮件交换器

3.4 主配置文件(/etc/named.rfc1912.zones)

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package 
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
// 
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//zone "localhost.localdomain" IN {type master;file "named.localhost";allow-update { none; };
};zone "localhost" IN {type master;file "named.localhost";allow-update { none; };
};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {type master;file "named.loopback";allow-update { none; };
};zone "1.0.0.127.in-addr.arpa" IN {type master;file "named.loopback";allow-update { none; };
};zone "0.in-addr.arpa" IN {type master;file "named.empty";allow-update { none; };
};zone "intra.cn" IN {type master;file "intra.cn.zone";
};

3.5 跳转配置(/etc/lbo.zone)

由于有大量需要forward跳转的条目,全部写在主配置文件/etc/named.rfc1912.zones中会使得该文件后期维护非常混乱,所以在/etc/named.conf最后添加了include “/etc/lbo.zone”,这样就可以把需要使用lbo线路进行跳转到外网的部分都在一个文件中,后期维护也会相对简单.

/etc/lbo.zone
zone "mircsoft.com" IN {type forward;forward only;forwarders { 10.199.36.1;10.198.33.1; };
};
zone "aliyun.com" IN {type forward;forward only;forwarders { 10.199.36.1;10.198.33.1; };
};
zone "tencent.com" IN {type forward;forward only;forwarders { 10.199.36.1;10.198.33.1; };
};

4.Slave DNS配置

4.1 主配置文件(/etc/named.rfc1912.zones)

关于intra.com的配置与Master DNS服务器不同,其他相同.slaves/intra.panasonic.cn不需要额外创建会根据Master DNS的相关记录自动同步.

zone "intra.cn" IN {type slave;masters { 192.168.31.66; };file "slaves/intra.panasonic.cn";
};

5.补充部分

由于intra记录是由其他分公司管理,因为申请周期非常长需要将一部分域名通过本地DNS先解析.
将对应的记录添加到本地的/root/local.txt文件中,通过脚本每天去更新intra.zone文件.
如果主DNS已经更新信息,则不再追加

5.1 从其他DNS上同步记录

dig -t axfr intra.cn @10.199.31.1

5.2 维护脚本

5.2.1 备份脚本

#!/bin/bash
FILENAME=/backup/DNS1-`date +%F`.tar.gz
[ ! -d /backup ] && mkdir /backup
/usr/bin/tar czfP $FILENAME /etc/named.conf /etc/named.rfc1912.zones /etc/lbo.zone /var/named/intra.cn.zone /root/update.txt

5.2.2 同步脚本

#/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:$PATH:$HOME/bin
# 检测10.199.31.1上关于intra.cn的行数,排除TTL SOA NS记录及注释行
dig -t axfr intra.cn @10.199.31.1 |grep -vE 'TTL|SOA|NS|;' >/root/new.zone;
# 导出现有记录
tail -n +12 /var/named/intra.cn.zone > /root/old.zone
# 设置版本号
version=`date +%Y%m%d%S`
echo $version
# 变量调试
diff /root/old.zone /root/new.zone
if [ ! $? ];thenecho -e "$version \E[1;32m记录相同,不需要更新\E[0m" >> /root/update.txt;else echo -e "$version \E[1;31m有记录被更新.\E[0m" >> /root/update.txt;
# 备份原intar.cn.zone配置文件\cp /var/named/intra.cn.zone /backup/intra.cn.zone.$version;
# 拼接新配置文件,并生成版本号cat /root/intra.head.zone /root/new.zone >/root/intra.zone;sed -i "3c$version" /root/intra.zone;
# 如果有本地配置文件
for Dm in `grep -Eo "([0-9a-zA-Z\-]+\.){1,5}[a-zA-Z\-]+" /root/local.txt`;dogrep $Dm /root/intra.zone;if [ $? ];thengrep $Dm /root/local.txt >> /root/intra.zone;fi
done
# 备份新配置文件,以备问题排查\cp /root/intra.zone /backup/intra.zone.$version;
# 配置文件替换,并重启应用\cp /root/intra.zone /var/named/intra.cn.zone;chmod 640 /var/named/intra.cn.zone;chgrp named /var/named/intra.cn.zone;if [ ! $(named-checkconf) ];thensystemctl restart named;fi
fi


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部