如何避免DNS查询的DNS欺骗

我试图find一种方法来获得一个域名的真正的IP地址(S)。 我正在做一个使用iptablestc进行stream量整形的路由器。 然后我需要设置iptables规则来标记来自某些域的数据包,使用他们的ip地址。

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


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谷歌DNS,有没有办法一个IP或域是不是最新的或欺骗使用我的方式吗?

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

是否可以使用主机命令执行安全的DNS查找?

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

对于所有的DNS机制,我仍然有点困惑,所以当然欢迎任何意见/评论/build议。

实际上,你从dig获得的结果是不可能被伪造的。 如果你想得到某种绝对的保证,那么你运气不好 – 没有DNSSEC这样的东西,欺骗是完全可能的。

只要DNSSEC没有被广泛使用,防止DNS欺骗的最好方法是使用“源端口随机化”。 自从“Kaminsky DNS bug”以来,这一点尤其重要。

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

从理论上讲,即使是“源端口随机化”也是可能的,但是需要很长的时间和很多的networkingstream量。

所以,如果你做了一个dig + dnssec并在flags字段中寻找'ad',你就知道它没有被欺骗……但是因为dnssec没有被启用到很多区域,所以不会告诉你任何东西在多数情况下。