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. [CTF]ROT5/13/18/47位移密码

    [CTF]ROT5/13/18/47位移密码 ---------------转换网站 https://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php ROT5:只对数字 ...

  2. Spring SPI 机制总结

    1.概念: SPI(Service Provider Interface)服务提供接口,简单来说就是用来解耦,实现插件的自由插拔,具体实现方案可参考JDK里的ServiceLoader(加载class ...

  3. JDBC相关配置和操作

    获取数据库连接的几种方式 ps.数据库URL : String url = "jdbc:mysql://localhost:3306/dailytext?useSSL=false&s ...

  4. git的一些常用命令总结

    1.拉取代码Git clone  "链接名称" 2.新建分支 git checkout -b "分支名称" 3.提交代码步骤 (1)Git status查看项目 ...

  5. php 获取某数组中出现次数最多的值(重复最多的值)与出现的次数

    1.$arr = array(7,7,8,9,10,10,10); $arr = array_count_values($arr);   // 统计数组中所有值出现的次数 arsort($arr);  ...

  6. 使用TK框架中updateByPrimaryKey与updateByPrimaryKeySelective区别

    int updateByPrimaryKey(T var1); int updateByPrimaryKeySelective(T var1); updateByPrimaryKeySelective ...

  7. springboot使用jwt进行权限验证

    springboot使用jwt进行权限验证 依赖准备 首先导入对应的依赖 <dependencies> <dependency> <groupId>org.apac ...

  8. Linux x86_64与i386区别之 —— 内存寻址

    毫无疑问,不管是32位,还是64位处理器,所有进程(执行的程序)都必须占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是 存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途不 ...

  9. primary key

    只要使用innodb就要为表指定主键: 如果不指定mysql就会自己找不为空且为一的作为主键,如果找不到,就会使用默认的(软件自己预定好的)作为主键: 主键分为单列主键和复合主键,用法和单列唯一,联合 ...

  10. mysql基本命令(增,查,改,删)

    from oldboy egon