23

How do I check the IPv6 address via command line? For IPv4 I simply use:

curl ipinfo.io/ip

This doesn't work for IPv6.

Zac67
  • 10,320
  • 2
  • 12
  • 32
user3200534
  • 392
  • 1
  • 3
  • 10

6 Answers6

27

to show the localy listed ipv6 address one can use

ip -6 addr

This will show all locally configured ipv6 address including the link-local address. to show just global reachable addresses you can use

ip -6 addr show scope global 

when you use a service like curl ipinfo.io/ip you are most often trying to work out the nat addresses you are using to reach the internet. Nat is much less common with IPv6 however there are many "whatsmyip" type service for ipv6 e.g.

With DNS:

dig -6 TXT +short o-o.myaddr.l.google.com @ns1.google.com
dig -t aaaa +short myip.opendns.com @resolver1.opendns.com

With HTTPS

curl -6 https://ifconfig.co
curl -6 https://ipv6.icanhazip.com  

with telnet

telnet -6 ipv6.telnetmyip.com 

Even With ssh

  ssh -6 sshmyip.com

I have seen this service over many other protocols as well so google and have fun ;)

balder
  • 401
  • 4
  • 4
4

Ipify has a ipv6 endpoint: curl https://api64.ipify.org

gte525u
  • 141
  • 2
3

ipinfo.io/ip doesn't support IPv6. You may want to try:

curl -6 https://ifconfig.co/ip

instead.

Tomek
  • 3,390
  • 1
  • 16
  • 10
1

The IP tools will show IPV6 addresses:

ip addr | grep inet6
Davidw
  • 1,222
  • 3
  • 14
  • 25
  • Thank, Which one to pick `scope global` or `scope link`? – Houman Dec 05 '20 at 22:58
  • 2
    Scope global is the rough equivalent of a public IP address in IPv4, while scope link is the rough equivalent of a private or APIPA address in IPv4. – Davidw Dec 06 '20 at 17:47
0

If you want to find the public IPv6 address you can do this with the dig command and then pipe the result into the sed command to remove the closing quotes.

dig -6 TXT +short o-o.myaddr.l.google.com @ns1.google.com | sed 's|"||g'

Another alternative is using the curl command and pulling the IP address from a URL such as OpenDNS'.

root@ubuntu:~# curl -s -6 "https://myipv6.p1.opendns.com/get_my_ip"
{
  "ip": "2a00:2345:dead:beef:1234:4567:89ab:cdef"
}

To print only the value (the IP address) you can specify the -r parameter.

root@ubuntu:~# curl -s -6 "https://myipv6.p1.opendns.com/get_my_ip" | jq -r '.ip'
2a00:2345:dead:beef:1234:4567:89ab:cdef
willowen100
  • 31
  • 2
  • 10
-2

Using curl vs ip is allowing me to check that this ip address is reachable from the web, when ip is only showing me the adress. Dig is not an available command on my machines.