Por alguma razão, opendns também não está funcionando para mim. por exemplo. seu comando não está em falta, é simplesmente que o opendns não está respondendo a essa consulta específica para encontrar o endereço IP público (temporariamente?).
O Google também oferece um serviço semelhante para descobrir qual endereço IP público você está usando. Faça:
ip=$(dig TXT +short o-o.myaddr.l.google.com @ns1.google.com)
Como o IPv6 tem precedência quando presente, para forçar uma resposta IPv4, faça:
ip=$(dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com)