Get IPv4 and IPv6 with one command
I would like to know if it's possible to get IPv4 and IPv6 addresses with just one invocation of dig
?
For example, this gives the IPv4 address:
dig hostname A
And this command will give me the IPv6 address:
dig hostname AAAA
How can I get both addresses, IPv4 and IPv6, with just one command?
Solution 1:
It may be that this has been added to dig since the question was asked, but for completeness this can be accomplished through the following query:
dig hostname A hostname AAAA +short
Source: http://linux.die.net/man/1/dig -- under the 'Multiple Queries' section
Solution 2:
If you're querying an authoritative server for the domain, you can get all the records for a name with an ANY
query:
dig hostname ANY @servername
However, this won't work reliably if you're querying a caching server. When a caching server responds to an ANY
query, it returns whatever records happen to be in cache at the time. If the name has both A
and AAAA
records, but the server has only looked up the A
records recently, the AAAA
records won't be in the cache, so it won't return them.
Furthermore, there is a proposal to allow DNS servers to refuse to answer ANY
queries: Providing Minimal-Sized Responses to DNS Queries that have QTYPE=ANY. If you query a server that implements this, you may not be able to get both responses with a single query (although one of the suggestions in that draft is that an ANY
query might just return all MX
, A
, and AAAA
, since this is often what clients want). So for best reliability, you should just make two queries.