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. nginx日志文件按天记录定时清理循环记录

    问题 nginx日志默认记录在一个文件access.log中,时间长了会导致日志文件特别大,甚至磁盘占满. 解决方案 使用以下方法,将access.log文件每天一个,然后清过15天以前的文件. 方法 ...

  2. 关于__new__和__call__的想法

    __new__和__call__很像,两个都是用来产生对象的 __new__用来产生的对象是'类',class 时触发(不是) __call__用来产生的对象是'对象',这种对象无法继续产生对象,但是 ...

  3. Spec2006使用说明

    Spec2006使用说明 五 10 十月 2014 By penglee 工具介绍 SPEC CPU 2006 benchmark是SPEC新一代的行业标准化的CPU测试基准套件.重点测试系统的处理器 ...

  4. shell基础之多功能nginx(安装、重启、停止等)

    1 #!/bin/bash 2 #要求:检查本机是否已编译安装nginx,检查本机是否存在nginx源码包,编译安装nginx,实现开启.停止.查看状态等功能 3 #检查是否已编译安装nginx 4 ...

  5. Linux系统添加永久静态路由的方法(包含Centos7)

    一.使用route命令添加 使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法:A.添加到主机的路由# route add –host 192.168.1.10 dev eth0 ...

  6. 《Java架构师的最佳实践》生产环境JVM调优之空间担保失败引起的FullGC

    1  问题现象 应用prod-xxx-k8s,在内存足够的情况下,仍然会产生偶发FullGC的问题. JVM配置如下: -Xmx8192m -Dhsf.server.max.poolsize=2500 ...

  7. Spring Cloud Alibaba系列之分布式服务组件Dubbo

    本博客的例子代码可以在github找到下载链接:代码下载 SpringBoot.SpringCloud Alibaba系列博客专栏:链接 1.分布式理论 1.1.分布式基本定义 <分布式系统原理 ...

  8. Ubuntu下安装与卸载Nginx

    1.Ubuntu下安装Nginx比较简单 敲入下列命令即可: sudo apt-get update sudo apt-get install nginx 2.Ubuntu下卸载,稍不注意就会入坑 s ...

  9. RabbitMQ(1)学习目标

    一:安装,专业术语,简单队列,工作队列,发布/订阅队列,路由队列,主题队列,RPC队列,事务,确认模式,SpringAMQP 二:什么是MQ? MQ就是消息队列,是一种进程间通信或同一进程的不同线程间 ...

  10. GO学习-(9) Go语言基础之切片

    Go语言基础之切片 本文主要介绍Go语言中切片(slice)及它的基本使用. 引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性. 例如: func arraySum(x ...