有没有办法将 DNS 区域从从属服务器导入到以前的主服务器?

有没有办法将 DNS 区域从从属服务器导入到以前的主服务器?

前一个主 DNS 服务器崩溃了。我试图使用它dig从不受我控制的从属服务器获取区域数据(peer1.net),并且我收到传输失败的消息

root@dnsserver:# dig +tcp -t ixfr=0 @ns1.peer1.net domain.com

; <<>> DiG 9.8.1-P1 <<>> +tcp -t ixfr=0 @ns1.peer1.net domain.com
; (1 server found)
;; global options: +cmd
domain.com.     38400   IN  SOA dns1.dnsserver.com. my.mail.com. 2012010301 10800 3600 604800 38400
; Transfer failed.

从属设备没有能力转移区域吗?

有没有办法建立 bind 的区域文件?

关于备份据数据中心团队称,备份磁盘不知何故被破坏了,无法读取。这是一个辅助磁盘,周末被安装并与主磁盘同步,显然几个月前就损坏了,我没有注意到。我有一个远程备份,/root /etc /var/lib/mysql所以/home当我听说备份磁盘无法读取时,我并没有眨眼,但在看到我的远程备份没有包括它之后,bind -> /var/named/chroot/etc/bind我开始感到后背一阵寒颤。

更新 2 危急时刻必须采取紧急措施,我设法编写了一个对我有点帮助的脚本。

#!/bin/bash
# 2013/01/21
# Building hosts files for bind9 from a list of domains in a txt file

DNS=some.dnsserver.net

for d in `cat domains`; do
    echo "\$ttl 38400" > $d.hosts
    dig +nocmd @$DNS $d any +multiline +noall +answer >> $d.hosts
    for cname in 'www' 'ftp' 'mail' 'webmail'; do
        dig +nocmd @$DNS $cname.$d CNAME +multiline +noall +answer >> $d.hosts
    done
    # now include input in /etc/bind/named.conf.local
    echo -e "zone \"$d\" {" >> /etc/bind/named.conf.local
    echo -e "\ttype master;" >> /etc/bind/named.conf.local
    echo -e "\tfile \"/var/lib/bind/$d.hosts\";" >> /etc/bind/named.conf.local
    echo -e "\t};" >> /etc/bind/named.conf.local
done

使用此脚本,我至少能够获得基本区域信息...我找不到查询子域的方法。Google 是我的好朋友,但我找不到它。要点https://gist.github.com/4589883

答案1

当然,您意识到,bind 实现中的从服务器会生成区域文件的副本(没有您的注释)。您可以简单地将这些区域副本文件复制到主服务器,并在从备份中检索主服务器上的原始区域文件时使用它们。

答案2

从备份还原

从属设备具有通过 RFC 进行传输的能力,但是通常在管理上被禁用。

答案3

从属服务器完全有能力充当区域传输的源。您的从属服务器可能只是未配置为允许这样做,或者至少不允许从您查询的 IP 地址这样做。

权威名称服务器通常配置为仅允许从预期使用的从属服务器 IP 地址白名单进行区域传输。由于从属服务器与其他从属服务器之间的从属关系并不常见,因此本身就是从属服务器的服务器通常不允许进行区域传输。

如果您确实从从属服务器获取了区域的内容,则可以在重建的主服务器上按原样安装该文件(尽管它可能看起来很丑陋)。

答案4

正如其他人所指出的,从属设备进行的区域传输确实有效,前提是从属设备配置为允许这样做。

但是,关于执行区域传输的方法,我想指出的是, (完全传输)比(自序列号以来的更改的增量传输)AXFR是更好的选择。IXFR=00

造成这种情况的原因有很多,首先,AXFR它出现在原始规范中,而IXFR后来才添加(这意味着,如果您不知道从属服务器运行什么软件,即使它们不支持增量传输,至少也有可能支持完整传输)。但也许更重要的是,由于您实际上根本没有任何区域数据,因此您不希望只有一些增量更改。当然,如果您尝试IXFR以无法实现的方式执行此操作,服务器将为您提供完整的区域内容,但0很可能存在于区域的历史记录中,并且它也不必是第一个版本,这一切都基于序列号运算和比较的工作原理以及这意味着没有实际的最小值或最大值(序列以定义的方式滚动而不是以整数最大值结束)。


如果从属服务器不允许区域传输并且从属服务器的系统管理员无法帮助您,那么获取完整数据的剩余选项似乎是从备份中恢复数据。

相关内容