一个命令可以获取IPv4和IPv6



我想知道是否有可能获得IPv4和IPv6地址,只需一次调用dig ?

例如,下面给出IPv4地址:
dig hostname A
这个命令会给我IPv6地址:
dig hostname AAAA

我怎么能得到两个地址,IPv4和IPv6,只有一个命令?

这可能是在提出问题后添加到dig中的,但为了完整起见,可以通过以下查询完成:

dig hostname A hostname AAAA +short

来源:http://linux.die.net/man/1/dig——在'Multiple Queries'部分

如果您正在为域名查询权威服务器,您可以使用ANY查询获得名称的所有记录:

dig hostname ANY @servername

但是,如果您正在查询缓存服务器,这将不可靠地工作。当缓存服务器响应ANY查询时,它返回当时恰好在缓存中的任何记录。如果名称同时有AAAAA记录,但是服务器最近只查找了A记录,那么AAAA记录将不在缓存中,因此它不会返回它们。

此外,有一个建议允许DNS服务器拒绝回答ANY查询:为具有QTYPE=ANY的DNS查询提供最小大小的响应。如果您查询实现此功能的服务器,您可能无法通过单个查询获得两个响应(尽管该草案中的建议之一是ANY查询可能只返回所有MX, AAAAA,因为这通常是客户端想要的)。因此,为了获得最佳可靠性,您应该只进行两次查询。

现在IPv6更常见了,我发现自己经常需要查询a和AAAA。我似乎永远都记不住语法,所以我最后为我的~/.bashrc写了一个名为digall的函数。我和一些朋友分享了它,他们很喜欢它,所以我把它放在github上,大意是欢迎任何人使用:https://gist.github.com/FreedomBen/23020c464779bb30cab754d92bdce6c6

这是当前版本,你可以把它放在你的路径下的一个文件中,并标记为可执行:

#!/usr/bin/env bash
#
# To use, simply run `digall <domain>` such as:
#
#   digall example.com
#   digall sub.example.com
#
# Place this file in your PATH.  Suggest either /usr/local/bin/ or ~/bin
#
# Alternatively you can wrap it in a function called `digall` and put in ~/.bashrc
#
# License:  MIT
declare -rx digall_color_restore='33[0m'
declare -rx digall_color_red='33[0;31m'
declare -rx digall_color_light_green='33[1;32m'
declare -rx digall_color_light_blue='33[1;34m'
declare -rx digall_color_light_cyan='33[1;36m'
if [ -z "$1" ]; then
  echo -e "${digall_color_red}Error: Please pass domain as first arg${digall_color_restore}"
else
  echo -e "${digall_color_light_blue}Queries: (dig +noall +answer '$1' '<type>')...${digall_color_light_cyan}n"
  for t in SOA NS SPF TXT MX AAAA A; do
    echo -e "${digall_color_light_green}Querying for $t records...${digall_color_restore}${digall_color_light_cyan}"
    dig +noall +answer "$1" "${t}"
    echo -e "${digall_color_restore}"
  done
fi

相关内容

  • 没有找到相关文章

最新更新