如何避免 DNS 查找中的 DNS 欺骗

如何避免 DNS 查找中的 DNS 欺骗

我正在尝试找到一种方法来获取域名的真实 IP 地址。我正在使用路由器进行流量整形iptables.然后我需要设置iptables使用 IP 地址标记来自特定域的数据包的规则。

我第一次使用命令,查询域的名称服务器,如下所示:


nbNameServer=`$dig NS $url +short | wc -l`

# If there is NS for the given domain
if [ $nbNameServer -gt 0 ]; then

for i in $($dig NS $url +short $TOdig); do

    ipDom=`$dig @$i $url +short $TOdig`

    # Ip found on the $i name server, no need to consult the others
    if [ -n "$ipDom" ]; then
        failed=`echo -e "$ipDom" | egrep "no servers could be reached"`

         if [ ! -n "$failed" ]; then
             break
         else
             ipDom=""
         fi
    fi
    done
 fi

如果 /etc/resolv.conf 文件中的路由器有 8.8.8.8 google DNS,那么是否有某个 IP 或域名不是最新的,或者像我一样被欺骗了?

我实际上不知道路由器是否会处于使用本地 DNS 服务器的环境中。

是否可以使用主持人命令呢?

我唯一想确定的是,对于给定的域 mydomain.com,DNS 查找将返回所有最新的 IP 地址(我只需要 A 或 AAAA 记录)。

我对所有 DNS 机制仍然有点困惑,因此当然欢迎任何评论/意见/建议。

答案1

从实际情况来看,您获得的结果dig被伪造的可能性很小。但是,如果您想要某种绝对的保证,那么您就没那么幸运了——如果没有 DNSSEC 之类的东西,欺骗是完全有可能的。

答案2

只要 DNSSEC 尚未被广泛使用,防止 DNS 欺骗的最佳方法就是使用“源端口随机化”。这一点尤其重要,因为“Kaminsky DNS 漏洞”

您需要确保您使用的 DIG 版本以及您查询的递归 DNS 服务器都已实现“源端口随机化”。

理论上,仍然可以欺骗甚至是“源端口随机化”,但这会花费很长时间并且会产生大量的网络流量。

答案3

因此,如果您执行 dig +dnssec 并在标志字段中查找“ad”,您就会知道它没有被欺骗......但由于很多区域都没有启用 dnssec,所以在大多数情况下,这不会告诉您任何信息。

相关内容