
A musician must make music, an artist must paint, a poet must write, if he is to be ultimately at peace with himself. What a man can be, he must be
~ Abraham Maslow.
Hey guys, ever been in a situation where you need to query your public WAN IP without any browser? It happens more often than you would think: a headless server, an SSH session, a firewall you are debugging, and the only thing you need is the IP that the rest of the world sees when it talks to you. Glad you came to the right post.
✅ Prerequisites
Before we continue, let us make sure the tools are in place. All three of these are common on most Linux distros, and at least one of them is almost always installed by default.
- dig: Dig stands for (Domain Information Groper) is a network administration command-line tool for querying Domain Name System (DNS) name servers. It is useful for verifying and troubleshooting DNS problems and also to perform DNS lookups and displays the answers that are returned from the name server that were queried.
- curl: cURL is a computer software project providing a library and command-line tool for transferring data using various network protocols. The name stands for “Client URL”, which was first released in 1997.
- wget: GNU Wget is a computer program that retrieves content from web servers. It is part of the GNU Project. Its name derives from World Wide Web and get. It supports downloading via HTTP, HTTPS, and FTP. Its features include recursive download, conversion of links for offline viewing of local HTML, and support for proxies.
🌐 What are the ways to find my IP?
Here are ways to find your own public IP from the terminal, each with its own personality.
First is using OpenDNS servers. The OpenDNS servers are always free and a toolkit for a network engineer:
dig +short myip.opendns.com @resolver1.opendns.com
If resolver1 isn’t responding, try the resolver2 to get your query.
Also, you could achieve this query using Google’s nameservers:
dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
The DNS approach is fast, because it is just a type of DNS query, no HTTP involved, and that makes it the handiest one when you are on a restricted network.
The second is using curl or wget, which is more common on many distros without installing any other packages. While this is much slower in resolving, the tools used are much more common:
curl https://ipinfo.io/ip
For wget command just replace the curl word above. The ipinfo.io service returns only the IP itself with no extra text, which makes it perfect for scripting.
🧠 Final Thoughts
I haven’t listed all the ways, as there are many ways to achieve this. But all these commands have been tested and used by me several times, and it always saves my ass when there’s a problem. Bookmark the ones that feel natural to you, and the next time you are staring at a headless server wondering what IP the world sees, the answer is one command away. If you have additional commands that you want to share, DM me at @ffimnsr.
