How Do I Get The External IP Address?


I'd recommend getting it directly from a DNS server.

  1. The DNS response protocol is standardised (the format will stay compatible).
  2. Historically, DNS services (OpenDNS, Google Public DNS, ..) tend to survive much longer and are more stable, more scalable, and generally more looked-after than whatever new hip HTTP service is hot today.
  3. This method is inherently faster (be it only by a few milliseconds!).

Using dig with OpenDNS as resolver:

dig ANY +short

Perhaps alias it in your bashrc so it's easy to remember

alias wanip='dig ANY +short'

Responds with a plain ip address:

$ wanip # or, 2606:4700:4700::1111


(Abbreviated from

usage:  dig [@global-dnsserver] [q-type] <hostname> <d-opt> [q-opt]

    q-type   one of (A, ANY, AAAA, TXT, MX, ...). Default: A.

    d-opt    ...
             +[no]short          (Display nothing except short form of answer)

    q-opt    one of:
             -4                  (use IPv4 query transport only)
             -6                  (use IPv6 query transport only)

The ANY query type returns either an AAAA or an A record. To prefer IPv4 or IPv6 connection specifically, use the -4 or -6 options accordingly.

To require the response be an IPv4 address, replace ANY with A; for IPv6, replace it with AAAA.Note that it can only return the address used for the connection. For example, when connecting over IPv6, it cannot return the A address.

Alternative servers and examples

In addition to OpenDNS, there are similar DNS services provided by Akamai and Google:

$ dig ANY +short

$ dig TXT +short

Example alias that specifically requests an IPv4 address:

alias wanip4='dig A +short -4'

$ wanip4

And for IPv6:

alias wanip6='dig AAAA +short -6'

$ wanip6


If the command is not working for some reason, there may be a problem with the upstream provider, the command-line tool, or something else. To help understand why it is not working, run the command without the +short option to reveal the details of the DNS query. For example:

$ dig ANY

;; Got answer: ->>HEADER<<- opcode: QUERY, status: NOERROR

;      IN  ANY

;; ANSWER SECTION:   0   IN  AAAA    2606:4700:4700::1111

;; Query time: 4 msec
;; WHEN: Fri Apr 11 00:00:01 GMT 2011


If you have questions about it, any feedback on ServerSuit or just keep up with our updates, follow and @ us on Facebook and Twitter.

Until Next Time!

February 21 2020

Add or review comments

Please leave your comment

Existing comments

Comments 0