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. windows-API劫持(API-HOOK)

    API Hook ApiHook又叫做API劫持,也就是如果A程序调用了B.cll里面的C函数,我们可以做到当A调用C函数执行的时候,直接执行我们自己事先准备好的函数,之后我们在执行真正的C,当然我们 ...

  2. Intel汇编语言程序设计学习-第四章 数据传送、寻址和算术运算-下

    4.3  和数据相关的操作符和伪指令 操作符和伪指令并非机器可执行的指令,相反,它们是由汇编器进行解释的.开发者可以使用一系列的MASM操作符或伪指令获取数据的地址以及大小等特征信息: OFFSET操 ...

  3. 老师不讲的C语言知识

    老师不讲的C语言知识 导语: 对于工科生,C语言是一门必修课.标准C(ANSI C)这个看似简单的语言在硬件底层编程.嵌入式开发领域还是稳坐头把交椅.在20年5月份,C语言就凭借其在医疗设备上的广泛应 ...

  4. 二、postman断言及正则表达式取值

    postman老式断言与新式断言总结:本文以微信开发者文档为例 断言处如图所示 一.老式断言 老式断言总结:var variables相当于代码中定义的变量,test['']=true;相当于pyth ...

  5. 一文详解MySQL如何同时自增自减多个字段

    本文将带大家聊一下如何同时自增自减多个字段 开始之前,先分享一套MySQL教程,小白入门或者学习巩固都可以看 MySQL基础入门-mysql教程-数据库实战(MySQL基础+MySQL高级+MySQL ...

  6. python爬虫——拉钩网python岗位信息

    之前爬取的网页都是采用"GET"方法,这次爬取"拉勾网"是采取了"POST"的方法.其中,"GET"和"POS ...

  7. MySQL中使用Show Profile

    Show profile 默认是禁用的,用处是记录在服务器中运行的查询耗费的时间和其他一些查询执行状态变更相关的数据. 当前系统是win10,Mysql版本是8.0.15 1.查看当前profilin ...

  8. RTTI之dynamic_cast运算符

    #include <iostream> #include <cstdlib> #include <ctime> using std::cout; class Gra ...

  9. [刷题] 3 Longest Substring Without Repeating Character

    要求 在一个字符串中寻找没有重复字母的最长子串 举例 输入:abcabcbb 输出:abc 细节 字符集?字母?数字+字母?ASCII? 大小写是否敏感? 思路 滑动窗口 如果当前窗口没有重复字母,j ...

  10. C++知识点案例 笔记-1

    1.重载函数 2.内联函数 3.New.Delete 4.重载与.const形参 5.常数据成员 6.静态成员函数 ==重载函数== #include <iostream> using n ...