我正在努力将我的域的名称服务器切换到新的 DNS 服务。将新设置与现有 DNS 设置进行比较的最佳工具是什么。
我尝试使用带有和不带有 @nameserver 的 dig 来确保新旧提供商之间的 DNS 记录匹配。
至今没有成功。
有任何想法吗 ?
我正在努力将我的域的名称服务器切换到新的 DNS 服务。将新设置与现有 DNS 设置进行比较的最佳工具是什么。
我尝试使用带有和不带有 @nameserver 的 dig 来确保新旧提供商之间的 DNS 记录匹配。
至今没有成功。
有任何想法吗 ?
我回答了那个老问题,我遇到了这个问题,我以这种方式解决了它:
对于单个域:
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) )
对于多个域或子域:
命令行:
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) )
注释:
> myresult.txt
您可以通过在末尾添加来重定向到文件。
我希望这可以帮助某人。
是的!从代码源的回答中得到灵感,我创建了这个来检查一个已知的区域文件。由于 ANY 查询不输出完整区域。
输入是绑定格式的区域文件,第一个字段是强制性且完整的!尚不支持空的第一个字段或缩短!
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"
该脚本用于在迁移期间比较两个区域文件。
它使用颜色编码和最终状态输出来指示哪些记录不同
SOA 和 NS 记录在迁移期间会有所不同 - 请注意差异
任何记录也可能会有所不同,因为它包含上述类型。
A MX 和 TXT 记录应该是相同的,如果它们存在的话——这里的不同意味着有问题!