bind---dns服务器

bind---dns服务器

  • 安装Bind服务程序
  • 配置bind
    • 添加防火墙转发策略,允许防火墙伪装IP(SNAT)---`非必需执行`
    • 编辑bind主配置文件
    • 编辑区域配置文件
      • 新建正向解析文件
      • 新建反向解析文件
      • 编辑正向解析文件
    • 开启域外转发
      • 修改DNS主配置文件中的转发策略
      • 测试配置文件是否正确
    • 重启dns服务
  • 关于DNS forward三个ip地址的查询顺序及CNAME对forward的影响
  • 测试域名转发
    • 测试如果其中一个或者两个IP地址不通的情况
    • `BIND`的查询机制
  • DNS理论基础
    • 域名分层结构
    • DNS分层结构
    • DNS解析过程
    • A记录
    • CNAME
  • DNS工作模式
    • 正向解析模式
    • 反向解析模式
  • 主服务--根服务器
    • 主服务-CDN,分离解析技术
    • 从服务器
    • 缓存服务器
  • 向DNS服务器发起域名查询请求的流程
  • TSIG加密

安装Bind服务程序

OS声明: Centos7

# 安装bind服务程序
yum install bind bind-chroot bind-utils

# 启动named-chroot并开机自启动
systemctl enable --now named
systemctl enable --now named-chroot

配置bind

主配置文件(/etc/named.conf):只有59行,而且在去除注释信息和空行之后,实际有效的参数仅有30行左右,这些参数用来定义bind服务程序的运行。

区域配置文件(/etc/named.rfc1912.zones):用来保存域名和IP地址对应关系的所在位置。类似于图书的目录,对应着每个域和相应IP地址所在的具体位置,当需要查看或修改时,可根据这个位置找到相关文件。

数据配置文件目录(/var/named):该目录用来保存域名和IP地址真实对应关系的数据配置文件。


添加防火墙转发策略,允许防火墙伪装IP(SNAT)—非必需执行

# 对收到的udp协议53端口(dns)发给外网网卡进行伪装
## eno33554968为外网网卡
iptables -t nat -A POSTROUTING -p udp --dport 53 -o eno33554968 -j MASQUERADE

# 保存防火墙策略
service iptables save

编辑bind主配置文件

# 编辑bind主配置文件
vim /etc/named.conf

# 修改监听地址---第11行
## 将127.0.0.1 修i该为any,意思是本机的所有IP地址都提供DNS服务
 options {
          listen-on port 53 { any; };

# 修改允许查询---第19行
## 将 allow-query     { locallhost; };中的locallhost修改为any,意思是所有来源IP都可以查询dns
allow-query     { any; };

编辑区域配置文件

bind服务程序的区域配置文件(/etc/named.rfc1912.zones)用来保存域名和IP地址对应关系的所在位置。在这个文件中,定义了域名与IP地址解析规则保存的文件位置以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息。服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器。将域名解析为IP地址的正向解析参数和将IP地址解析为域名的反向解析参数分别如图13-3和图13-4所示。

bind---dns服务器_第1张图片

# 编辑区域配置文件
vim /etc/named.rfc1912.zones

配置信息详情

区域配置文件中,默认值提供了一些模板,没有数据,可以清空,便于编辑;
每一行配置文件都要以;(分号)结束

注意反向解析ip是从最后一位开始读的。
bind---dns服务器_第2张图片

# 这一段是正向解析
## zone 意思是区域,每个域名都是一个区域
## IN  表示这个域名的说明信息
zone "testbaidu.com" IN {
type master;                     ## type master 指这是一个主服务器
file "testbaidu.com.zone";           ## file 指这个域名的文件的配置文件的保存路径
## allow-update 指允许哪台从服务器对数据进行同步,none;表示不允许从服务器同步
allow-update {none;};       
};

# 下面这段是反向解析
## zone 意思是区域,每个域名都是一个区域
## IN  表示这个域名的说明信息
zone "10.168.192.in-addr.arpa" IN {
type master;                      ## type master 指这是一个主服务器
file "192.168.10.arpa";           ## file 指这个域名的文件的配置文件的保存路径
## allow-update 指允许哪台从服务器对数据进行同步,none;表示不允许从服务器同步
allow-update {none;};
};

新建正向解析文件

cp -a 是复制文件原有属性

# 进入/var/named目录
cd /var/named

# 复制named.localhost为testbaidu.com.zone
## named.localhost为正向解析模板文件
cp -a named.localhost testbaidu.com.zone

新建反向解析文件

# 进入/var/named目录
cd /var/named

# 复制named.loopback为192.168.10.arpa
## named.loopback为反向解析模板文件
cp -a named.loopback 192.168.10.arpa

编辑正向解析文件

bind---dns服务器_第3张图片

vim testbaidu.com.zone

## 修改参数
$TTL 1D	#生存周期为1天
## 每个域名后面都有一个根域,根域就是个点,所有要写上testbaidu.com.
## 根域后面跟的是邮箱[email protected],此处的@必须用点(.)替换。
@	IN SOA	testbaidu.com.	admin.testbaidu.com.	(	
#授权信息开始:	#DNS区域的地址	#域名管理员的邮箱(不要用@符号)	
0;serial	#更新序列号
1D;refresh	#更新时间
1H;retry	#重试延时
1W;expire	#失效时间
3H );minimum	#无效解析记录的缓存时间
NS	ns.testbaidu.com.	#域名服务器记录,nameserver(域名服务器)的意思
ns	IN A	192.168.10.10	#地址记录(ns.linuxprobe.com.)
www	IN A	192.168.10.10	#地址记录(www.linuxprobe.com.)

开启域外转发

参考: BIND使用小结(Forward转发)

域名转发配置

修改服务器的IPV4转发功能

# 开启服务器的ipv4转发功能
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# 使ipv4转发生效
sysctl -p

修改DNS主配置文件中的转发策略

DNSSec配置

编辑bind主配置文件
vim /etc/named.conf

# 修改允许查询---第19行
## 将 allow-query     { locallhost; };中的locallhost修改为any
allow-query     { any; };   # any意思是所有来源IP都可以查询dns

# 在allow-query允许查询下行配置域外转发

# 即访问非xxx.cn域名时将解析转发到这几个DNS地址上进行解析。
forwarders { 
    114.114.114.114;
    223.5.5.5;
 };

# 递归查询
recursion yes;

# 1) forward first 优先使用forwardersDNS服务器做域名解析,如果查询不到就往根域上找.
# 2)forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败(不会往根域上找)。
forward first;  # 优先使用forwardersDNS服务器做域名解析

# DNS安全扩展 设为no
## 参数有yes|no
dnssec-enable no;
# DNS安全扩展验证 设为no
## 参数有yes|no
dnssec-validation no;

测试配置文件是否正确

# 测试配置文件是否正确
named-checkconf

重启dns服务

# 重启dns服务
systemctl restart named-chroot

关于DNS forward三个ip地址的查询顺序及CNAME对forward的影响

关于DNS forward三个ip地址的查询顺序及过程说明:

每次域名请求会轮循环三个ip地址,逻辑是:
取三个ip地址,随机使用一个开始请求,如果失败则随机取剩下的两个中的一个,如果再失败就取最剩下的那个,如果也失败了,则根据forward的规则判断下一步怎么做,如果forward的规则是forward的only模式,那么就直接返回给用户解析失败结果;如果是forward的first模式,则递归去查询请求,然后返回给用户结果。

测试域名转发

参考: https://www.cnblogs.com/xiangsikai/p/8438544.html

参考: DNS转发测试方法:禁用三个IP地址其中的一个进行测试


测试如果其中一个或者两个IP地址不通的情况

测试结果:在结果中只能抓到请求两个好的IP地址的结果,禁用的那个未抓到任何结果

结论:如果三个IP地址中用不通的IP地址,DNS服务器压根不会尝试这个不通的IP地址(推测可能是内部有探测机制)

一个域名做了CNAME,将不能同时再做A纪录, 如果同时在bind中配置CNAMEA纪录后加载时会报错。在某些低版本设备上即使能强制并存, A纪录也不会生效,仍以CNAME生效.


BIND的查询机制

BIND的查询机制是:
当一个域名的NS记录在DNS服务器上的缓存里存在时,如果这个域名的权威DNS为其做了CNAME,则该域名将不会以原始域名进行请求解析,而是以CNAME做为解析请求(如果做了forward,将以CNAME进行forward),然后把CNAME得到A纪录做为该域名的解析结果.
说白一点,就是拿着 cname的域名进行forward请求,而不是拿着原始域名进行forward请求了


DNS理论基础


域名分层结构

主机名.次级域名.域名.根域名

host.sld.tld.root

主机名 次级域名 域名 根域名
host. sld. tld. root

bind---dns服务器_第4张图片


DNS分层结构

分类 作用
根DNS服务器 英文:Root nameserver。本地域名服务器在本地查询不到解析结果时,则第一步会向它进行查 询,并获取顶级域名服务器的IP地址。
顶级域名服务器 英文:Tld nameserver。负责管理在该顶级域名服务器下注册的二级域名,例如 “www.example.com”,.com则是顶级域名服务器,在向它查询时,可以返回二级域名 “example.com”所在的权威域名服务器地址
权威域名服务器 英文:authoritative nameserver。在特定区域内具有唯一性,负责维护该区域内的域名与IP地址 之间的对应关系,例如云解析DNS。
本地域名服务器 英文:DNS resolver或Local DNS。本地域名服务器是响应来自客户端的递归请求,并最终跟踪直 到获取到解析结果的DNS服务器。例如用户本机自动分配的DNS、运营商ISP分配的DNS、谷歌 /114公共DNS等

DNS解析过程

bind---dns服务器_第5张图片

  1. LocalDNS获取根DNS服务器
  2. 根DNS服务器获取顶级域名服务器
  3. 顶级域名服务器获取权威域名服务器
  4. 权威域名服务器获取域名解析结果
# 递归解析过程
dig www.aliyun.com @223.5.5.5 +trace


A记录

将域名解析到一个IP地址上


CNAME

将域名解析到一个别名上


DNS工作模式


正向解析模式

将域名解析为IP地址
正常情况下,我们的99.99%都是正向解析

bind---dns服务器_第6张图片



反向解析模式

将IP地址解析为域名

bind---dns服务器_第7张图片


主服务–根服务器

管理域名和ip地址的对应关系,在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。

全球13台IPV4根服务器


主服务-CDN,分离解析技术


从服务器

同步主服务器的数据,从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。


缓存服务器

通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。


向DNS服务器发起域名查询请求的流程

当用户向网络指定的DNS服务器发起一个域名请求时,通常情况下会有本地由此DNS服务器向上级的DNS服务器发送迭代查询请求;如果该DNS服务器没有要查询的信息,则会进一步向上级DNS服务器发送迭代查询请求,直到获得准确的查询结果为止。其中最高级、最权威的根DNS(主)服务器总共有13台,分布在世界各地.

bind---dns服务器_第8张图片


TSIG加密

你可能感兴趣的:(DNS,memcached,数据库,linux)