【问题标题】:Get IPv4 and IPv6 with one command一键获取 IPv4 和 IPv6
【发布时间】:2014-07-05 03:27:48
【问题描述】:

我想知道是否可以通过一次调用 dig 来获取 IPv4 和 IPv6 地址?

例如,这给出了 IPv4 地址:

dig hostname A

这个命令会给我 IPv6 地址:

dig hostname AAAA

如何通过一个命令同时获得 IPv4 和 IPv6 地址?

【问题讨论】:

    标签: dig


    【解决方案1】:

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

    dig hostname A hostname AAAA +short
    

    来源:http://linux.die.net/man/1/dig -- 在“多个查询”部分下

    【讨论】:

      【解决方案2】:

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

      dig hostname ANY @servername
      

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

      此外,还有一个提议允许 DNS 服务器拒绝回答 ANY 查询:Providing Minimal-Sized Responses to DNS Queries that have QTYPE=ANY。如果您查询实现此功能的服务器,您可能无法通过单个查询获得两个响应(尽管该草案中的一个建议是ANY 查询可能只返回所有MXA、和AAAA,因为这通常是客户想要的)。因此,为了获得最佳可靠性,您应该只进行两次查询。

      【讨论】:

      【解决方案3】:

      现在 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='\033[0m'
      declare -rx digall_color_red='\033[0;31m'
      declare -rx digall_color_light_green='\033[1;32m'
      declare -rx digall_color_light_blue='\033[1;34m'
      declare -rx digall_color_light_cyan='\033[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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-14
        • 2021-11-08
        • 2012-09-10
        • 2015-09-10
        • 1970-01-01
        • 1970-01-01
        • 2016-06-10
        • 2016-09-19
        相关资源
        最近更新 更多