Linux基础服务——Bind DNS服务 Part4

转发与区域记录更新

一个DNS服务器不可能保存所有的区域记录,所以我们一般都会将其他的区域纪录转发到其他的服务器上进行解析。

Bind9提供了全局转发和区域转发。我们尝试配置一下。

全局转发

//在全局配置里修改和添加如下内容,关闭DNSSEC,配置forwarders,指定转发服务器为114.114.114.114,转发模式为only
dnssec-enable no;
dnssec-validation no;
forward only;
forwarders { 114.114.114.114; };

forward有两个选项first和only,first为默认值。

first值只有forwarders列表不为空时才生效,该值的含义为,使服务器优先使用forwarders列表中的内容进行查询,如果不能得到正确响应,则自行寻找答案。(向根服务器开始迭代查询)

only值则只使用forwarders列表的服务器,如果不能得到正确响应,则返回不能解析。

那么如果用户向向我们发送请求,若自身无法解析则可以转发到其他的DNS进行解析。

区域转发

配置区域转发,例如我们的客户机需要访问ns1.exam.com网站。那么在服务器上需要进行如下配置。

需要注意的是,在配置区域转发时,需要配置全局转发器,若没有全局转发器则会导致区域内的转发器被作用成全局转发器,所有DNS请求都会转发至区域内指定的转发器。

//下述内容定义了exam.com这个区域的请求全部转发至192.168.100.60这个DNS服务器。
zone "exam.com" IN {
type forward;
forward only;
forwarders { 192.168.100.60; };
};
//转发的服务器上需要有该区域

此时客户机进行测试

PS C:\Users\77653> nslookup - 192.168.100.50
默认服务器: dns.test.com
Address: 192.168.100.50 > ns1.exam.com
服务器: dns.test.com
Address: 192.168.100.50 非权威应答:
名称: ns1.exam.com
Address: 192.168.100.60

测试成功!

区域记录更新

Bind9支持区域记录的动态更新,使用nsupdate命令可以动态更新区域内的记录。例如我们在test.com域中有如下内容。

$TTL 1D
@ IN SOA dns.test.com. admin.test.com. (
4 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns
NS dns2
ms NS dns2
tomcat A 192.168.100.90
dns2 A 192.168.100.60
dns A 192.168.100.50
Linux A 192.168.200.30
www A 192.168.100.20
web.test.com. A 192.168.100.10
Nginx CNAME web.test.com.

我需要添加一条A记录进入该区域。可以使用nsupdate命令行工具。首先在主配置文件中允许某个主机动态更新区域内容。

zone "test.com" IN {
type master;
file "test.com.zones";
allow-transfer { key test.com-key; };
allow-update { 192.168.100.60; }; //配置allow-update项
};

在客户端使用nsupdate命令进行更新。

[root@dns2 ~]# nsupdate
> server 192.168.100.50
> zone test.com.
> update add LDAP.test.com. 86400 A 192.168.100.40
> send

nsupdate命令语法如下:

  • server servername port

    • 这里servername为服务器的地址,若没有指定,则发送到目标域SOA记录中指定的主服务器上。port为动态更新请求的端口,若没有特意指定则为默认的53端口
  • zone zonename
    • zonename指定区域
  • update add domain-name ttl class type data
    • domain-name为区域名称 ttl为缓存时间 class一般为IN type为记录类型
  • update delete domain-name ttl class type data
    • 格式同上

      下面进入dns服务器查看区域文件。
[root@dns1 named]# ll
······
-rw-r--r-- 1 named named 499 Jun 16 04:59 test.com.zones
-rw-r--r-- 1 named named 705 Jun 16 04:29 test.com.zones.jnl
-rw-r--r-- 1 named named 499 Jun 16 04:51 tmp-28cGJKIgsY
······

直接查看原有的区域文件,发现内部并没有被改动,实际上的改动结果被储存在tmp开头的文件中,改动的信息被储存在test.com.zones.jnl文件(二进制文件不宜修改)中。一般情况下在15分钟内,Bind会将jnl文件转储到区域文件中。

此时添加进入的DNS记录是能够正常提供服务的,如果需要实时更新到区域文件中,需要使用rndc sync且需要注意区域文件的文件权限(rndc的配置待续)。

实际上我们可以将Windows Server AD域的DNS信息也保存在Bind 服务中,接下来开展实验。

Windows Server向Bind注册DNS信息

使用Windows Server 2019,IP地址为192.168.100.200,DNS指向192.168.100.50(DNS服务器),主机名为MSC,完整主机名为msc.test.com,DNS服务器需要配置允许该Windows Server更新dns条目。

Windows Server安装AD域服务,注意,AD域的根域名要与Bind服务器中允许更新记录的域相符。



安装AD域服务完毕后,Windows Server会安装DNS服务器,且将默认的DNS指向本机的环回地址,我们调整到192.168.100.50。然后重新启动Netlogon服务,即可将DNS记录传送至Bind服务器。



重新启动完毕后,查看Bind服务器日志。

Jun 16 07:26:18 dns1 named[1019]: client @0x7fde6ae55fa0 192.168.100.200#55190: updating zone 'test.com/IN': adding an RR at '_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.test.com' SRV 0 100 88 MSC.test.com.
Jun 16 07:26:18 dns1 named[1019]: client @0x7fde6ae55fa0 192.168.100.200#61652: updating zone 'test.com/IN': adding an RR at '_ldap._tcp.dc._msdcs.test.com' SRV 0 100 389 MSC.test.com.
Jun 16 07:26:18 dns1 named[1019]: client @0x7fde6ae55fa0 192.168.100.200#59632: updating zone 'test.com/IN': adding an RR at '_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.test.com' SRV 0 100 389 MSC.test.com.
Jun 16 07:26:18 dns1 named[1019]: client @0x7fde6ae55fa0 192.168.100.200#55190: updating zone 'test.com/IN': adding an RR at '_kerberos._tcp.test.com' SRV 0 100 88 MSC.test.com.
······
Jun 16 07:26:18 dns1 named[1019]: client @0x7fde6ae55fa0 192.168.100.200#60226: updating zone 'test.com/IN': adding an RR at '_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.test.com' SRV 0 100 389 MSC.test.com.
Jun 16 07:26:18 dns1 named[1019]: client @0x7fde6ae55fa0 192.168.100.200#63234: updating zone 'test.com/IN': adding an RR at 'DomainDnsZones.test.com' A 192.168.100.200
Jun 16 07:26:20 dns1 named[1019]: client @0x7fde6ae55fa0 192.168.100.200#55190: updating zone 'test.com/IN': deleting rrset at 'MSC.test.com' AAAA
Jun 16 07:26:20 dns1 named[1019]: client @0x7fde6ae55fa0 192.168.100.200#55190: updating zone 'test.com/IN': deleting rrset at 'MSC.test.com' A
Jun 16 07:26:20 dns1 named[1019]: client @0x7fde6ae55fa0 192.168.100.200#55190: updating zone 'test.com/IN': adding an RR at 'MSC.test.com' A 192.168.100.200

Bind将日志文件转储到区域文件后,内容如下

[root@dns1 named]# cat test.com.zones
$ORIGIN .
$TTL 86400 ; 1 day
test.com IN SOA dns.test.com. admin.test.com. (
32 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NS dns.test.com.
NS dns2.test.com.
$TTL 600 ; 10 minutes
A 192.168.100.200
$ORIGIN _msdcs.test.com.
5930c61f-c708-4a47-b37e-8aa2f93295f8 CNAME MSC.test.com.
$ORIGIN _tcp.Default-First-Site-Name._sites.dc._msdcs.test.com.
_kerberos SRV 0 100 88 MSC.test.com.
_ldap SRV 0 100 389 MSC.test.com.
$ORIGIN _tcp.dc._msdcs.test.com.
_kerberos SRV 0 100 88 MSC.test.com.
_ldap SRV 0 100 389 MSC.test.com.
$ORIGIN _msdcs.test.com.
_ldap._tcp.9f564ec1-1f82-4f63-9a79-db6143b9222f.domains SRV 0 100 389 MSC.test.com.
gc A 192.168.100.200
$ORIGIN gc._msdcs.test.com.
_ldap._tcp.Default-First-Site-Name._sites SRV 0 100 3268 MSC.test.com.
_ldap._tcp SRV 0 100 3268 MSC.test.com.
$ORIGIN _msdcs.test.com.
_ldap._tcp.pdc SRV 0 100 389 MSC.test.com.
$ORIGIN _tcp.Default-First-Site-Name._sites.test.com.
_gc SRV 0 100 3268 MSC.test.com.
_kerberos SRV 0 100 88 MSC.test.com.
_ldap SRV 0 100 389 MSC.test.com.
$ORIGIN _tcp.test.com.
_gc SRV 0 100 3268 MSC.test.com.
_kerberos SRV 0 100 88 MSC.test.com.
_kpasswd SRV 0 100 464 MSC.test.com.
_ldap SRV 0 100 389 MSC.test.com.
$ORIGIN _udp.test.com.
_kerberos SRV 0 100 88 MSC.test.com.
_kpasswd SRV 0 100 464 MSC.test.com.
$ORIGIN test.com.
$TTL 86400 ; 1 day
dns A 192.168.100.50
dns2 A 192.168.100.60
$TTL 600 ; 10 minutes
DomainDnsZones A 192.168.100.200
$ORIGIN DomainDnsZones.test.com.
_ldap._tcp.Default-First-Site-Name._sites SRV 0 100 389 MSC.test.com.
_ldap._tcp SRV 0 100 389 MSC.test.com.
$ORIGIN test.com.
ForestDnsZones A 192.168.100.200
$ORIGIN ForestDnsZones.test.com.
_ldap._tcp.Default-First-Site-Name._sites SRV 0 100 389 MSC.test.com.
_ldap._tcp SRV 0 100 389 MSC.test.com.
$ORIGIN test.com.
$TTL 86400 ; 1 day
LDAP A 192.168.100.40
Linux A 192.168.200.30
ms NS dns2
$TTL 1200 ; 20 minutes
MSC A 192.168.100.200
$TTL 86400 ; 1 day
Nginx CNAME web
tomcat A 192.168.100.90
web A 192.168.100.10
www A 192.168.100.20

Bind DNS服务——转发与区域记录更新的更多相关文章

  1. Linux基础服务——Bind DNS服务 Part2

    Linux基础服务--Bind DNS服务 Part2 DNS反向解析与区域传送 实验环境延续Part1的实验环境. 反向区域配置 正向解析是域名到IP地址的映射,反向解析则是IP地址到域名的解析,在 ...

  2. Linux基础服务——Bind DNS服务 Part1

    Linux基础服务--Bind DNS服务 Part1 DNS正向解析 实验环境: CentOS8.3.2011 IP地址:192.168.100.50 VMware虚拟环境 NAT网段 需要解析的区 ...

  3. Bind DNS服务——基础知识

    Linux基础--Bind DNS服务 Part0 DNS简介 域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库 ...

  4. 批量添加删除Windows server DNS服务 恶意域名 * A记录 指向 127.0.0.1(2019年6月5日更新)

    下载链接:https://pan.baidu.com/s/1OUHyvnIfXYF0PdiT-VRyHw  密码:7gjj 注意!本解决方案在本地的Windows server服务器上把恶意域名指向1 ...

  5. DNS服务初步搭建

    一.准备DNS服务环境 选择 bind dns服务软件包 直接yum安装 bind 和 bind-utils 工具包,测试机器安装bind-utils测试工具包. 服务程序名为 named 二.配置D ...

  6. centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课

    centos  DNS服务搭建  DNS原理  使用bind搭建DNS服务器 配置DNS转发 配置主从  安装dig工具  DHCP  dhclient  各种域名解析记录  mydns DNS动态更 ...

  7. 【Linux】DNS服务-BIND从服务器、缓存服务器及转发服务器配置(三)

    环境 操作系统:CentOS 6.5 DNS软件:bind(安装参照:[Linux]DNS服务-BIND基础配置(二)) BIND从服务器 从服务器就是在bind的主配置文件中添加从域example. ...

  8. DNS解析原理与Bind部署DNS服务

    DNS是什么? DNS(Domain Name System,域名系统)是互联网上最核心的带层级的分布式系统,它负责把域名转换为IP地址.反查IP到域名的反向解析以及宣告邮件路由等信息,使得基于域名提 ...

  9. DNS服务和BIND

    今天我们来介绍一下DNS服务,在大家的印象中DNS可能只是将域名解析为IP地址,可能其他的暂时还不太了解,希望本篇内容能帮助大家. 1.什么是DNS? DNS( Domain Name System) ...

随机推荐

  1. 在kubernetes上运行WASM负载

    在kubernetes上运行WASM负载 WASM一般用在前端业务中,但目前有扩展到后端服务的趋势.本文使用Krustlet 将WASM服务部署到kubernetes. 简介 Krustlet 是一个 ...

  2. MySQL三种报错注入方式下的insert,update,delete命令注入示例

    select 查询数据(大部分) 在网站应用中进行数据显示查询操作 insert 插入数据 在网站应用中进行用户注册添加等操作 delete 删除数据 后台管理里面删除文章删除用户等操作 update ...

  3. 在Visual Studio 中使用git——文件管理-上(四)

    在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...

  4. C++入门教程之一:Hello world

    C++入门教程之一:Hello world C++是各位程序员跳不过的一个坑,也是各位想学编程的人必备的知识,更是各大比赛(如NOI)的官方指定语言. 在TIOBE(一个编程语言社区排行榜)中,截止2 ...

  5. c++如何理解map对象的value_type是pair类型

    map 是以 pair形式插入的.map中的元素的类型value_typetypedef pair<const Key, Type> value_type;value_type 被声明为 ...

  6. 排坑&#183;ASCII码为160的空格(nbsp)

    阅文时长 | 2.83分钟 字数统计 | 1345.2字符 『排坑·ASCII码为160的空格(nbsp)』 编写人 | SCscHero 编写时间 | Wednesday, September 9, ...

  7. 对于uos目前只能安装商店的感慨,强制安装除外

    对于uos目前只能安装商店的感慨,强制安装除外 jie1018 / 2020-5-16 21:35 浏览: 702 / 回复: 26     个人觉得,在软件不足的情况下,更应该是系统支持,而不是让用 ...

  8. nginx负载均衡搭建phpmyadmin加入redis了解session会话原理

    myphpadmin项目理解cookie和session 当我们平时上网的时候,在刷新之后或者退出浏览器再次打开浏览器不需要登陆网页了,这就是利用了cookie和session: 环境配置 hostn ...

  9. k8s创建资源的两种方式及DaemonSet应用(5)

    一.创建方式分类 Kubernetes 支持两种方式创建资源: (1)用 kubectl 命令直接创建,比如: kubectl run httpd-app --image=reg.yunwei.com ...

  10. 云计算OpenStack核心组件---nova计算服务(7)

    一.nova介绍 Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的. ...