比较两个不同名称服务器上的 DNS

问题描述 投票:0回答:4

我正在努力将我的域的名称服务器切换到新的 DNS 服务。 将新设置与现有 DNS 设置进行比较的最佳工具是什么。

我尝试在有和没有@nameserver 的情况下使用 dig 来确保 DNS 记录在新旧提供商之间匹配。

到目前为止没有成功。

任何想法?

dns compare nameservers
4个回答
26
投票

我回答那个老问题,我遇到了这个问题,我是这样解决的:

对于单个域:

diff <(sort -u <(dig +nottlid +noall +answer @ns.myfirstserver.com example.com ANY) ) <(sort -u <(dig +nottlid +noall +answer @ns.mysecondserver.com example.com ANY) )

对于多个域或子域:

  • 逐行创建一个包含 1 个域的文本文件(例如:alldomains.txt)

命令行:

diff <(sort -u <(for host in $(cat alldomains.txt); do dig +nottlid +noall +answer @ns.myfirstserver.com $host ANY; done) ) <(sort -u <(for host in $(cat alldomains.txt); do dig +nottlid +noall +answer @ns.mysecondserver.com $host ANY; done) )

评论:

  • diff:逐行比较文件
  • sort:对文本文件行进行排序
  • -u:确保只有唯一行
  • dig:DNS 查找实用程序
  • +nottlid:打印记录时不显示TTL
  • +noall:清除所有显示标志
  • answer:显示回复的权限部分。
  • @ns.server.com:要查询的名称服务器的名称或IP地址
  • ANY:表示需要什么类型的查询(ANY、A、MX、SIG等)

您可以通过在末尾添加

> myresult.txt
来重定向到文件。

我希望这可以帮助某人。


2
投票

此脚本用于在迁移过程中比较两个区域文件。

它使用颜色编码和最终状态输出来指示哪些记录不同

SOA 和 NS 记录在迁移过程中会有所不同 - 请注意差异

ANY 记录可能也会有所不同,因为它包含上述类型。

MX 和 TXT 记录应该是相同的,如果它们存在 - 这里的差异意味着问题!

来源:https://github.com/geek4unix/compare-zones/


1
投票

是的!在代码源答案的启发下,我创建了这个来检查已知的区域文件。由于任何查询都不会输出完整区域。

输入是绑定格式的区域文件,第一个字段是必填且完整的!尚不支持空第一字段或缩短!

zone=test.txt; ns1=ns1.test.com; ns2=ns2.test.com; \
zcl=$(basename ${zone} .txt)_cl.txt; zl1=$(basename ${zcl} .txt)_${ns1}.log; zl2=$(basename ${zcl} .txt)_${ns2}.log; \
echo "Diffing the stuff in $zcl (from $zone) for $ns1 <-> $ns2" >&2 ;echo " loggings to $zl1, $zl2" >&2 ; \
cat $zone | awk 'BEGIN {IFS=" "} $1 !~ /^;|^[[:space:]]+|^$/ {t=$4; if (!match($2,/[[:digit:]]/)) t=$3; n=$1; print n " " t }' | sort -u > $zcl ; \
diff <(sort -u <(while read host type; do echo "Q $host $type" >&2; dig +nottlid +noall +answer @$ns1 $host $type; done < $zcl) | tee $zl1 ) \
     <(sort -u <(while read host type; do dig +nottlid +noall +answer @$ns2 $host $type; done < $zcl) | tee $zl2 ) && echo "OK"

0
投票

这是我的一行,它只在两列中显示 A 记录:

dig +short @8.8.8.8 pjbrunet.com|(b=$(cat);dig +short @8.8.8.8 google.com <<<"$b"|diff -y <(echo "$b") -)

长得像:

1.2.3.4                           | 142.251.45.78

如果您要将您的博客/网站移动到另一个主机,通常您正在查看 A 记录。貌似

dig +short
只是返回了A记录,这就是我在等待传播时看到的。

假设您正在比较两个不同的 DNS 结果,您可能想将 8.8.8.8 更改为其他内容。这是 全球 DNS 服务器列表

对于正常的差异输出,只需删除

-y

© www.soinside.com 2019 - 2024. All rights reserved.