Para encontrar o ip externo, você pode usar serviços externos baseados na web ou usar métodos baseados no sistema. O mais fácil é usar o serviço externo, e as soluções baseadas em ifconfig
só funcionarão no seu sistema se você não estiver atrás de um NAT
. os dois métodos foram discutidos abaixo em detalhes.
Encontrar o IP externo usando serviços externos
A maneira mais fácil é usar um serviço externo por meio de um navegador de linha de comando ou ferramenta de download. Como wget
está disponível por padrão no Ubuntu, podemos usar isso.
Para encontrar seu ip, use-
$ wget -qO- http://ipecho.net/plain ; echo
Cortesia :
Você também pode usar lynx
(navegador) ou curl
no lugar de wget
com pequenas variações no comando acima, para encontrar seu ip externo.
Usando curl
para encontrar o ip:
$ curl ipecho.net/plain
Para um melhor uso de saída formatada:
$ curl ipecho.net/plain ; echo
Um método mais rápido (possivelmente o mais rápido) usando dig
com OpenDNS
como resolvedor:
As outras respostas aqui passam por HTTP para um servidor remoto. Alguns
eles exigem análise da saída ou dependem do cabeçalho User-Agent
para fazer o servidor responder em texto simples. Eles também mudam bastante
freqüentemente (vá abaixo, mude o nome deles / delas, ponha anúncios, pode mudar
formato de saída, etc.).
- O protocolo de resposta do DNS é padronizado (o formato permanecerá compatível).
- Historicamente, os serviços DNS (OpenDNS, Google Public DNS, ..) tendem a sobreviver por muito mais tempo e são mais estáveis, escalonáveis e geralmente parecidos
depois do que qualquer novo serviço de hip whatismyip.com HTTP está quente hoje.
- (para os geeks que se preocupam com a micro-otimização), esse método deve ser inerentemente mais rápido (seja apenas alguns microssegundos).
Usando dig com OpenDNS como resolvedor:
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
Copiado de: link
Como encontrar um IP externo sem depender de serviços externos
- Se você souber o nome da sua interface de rede
Digite o seguinte no seu terminal:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print }' | awk '{print }'
Acima, substitua <interface_name>
pelo nome da sua interface real, por exemplo: eth0
, eth1
, pp0
, etc ...
Exemplo de uso:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print }' | awk '{print }'
111.222.333.444
- Se você não souber o nome da sua interface de rede
Digite o seguinte no seu terminal (isso obtém o nome e endereço IP de cada interface de rede em seu sistema):
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( == "inet" ) { print } else if ( == "Link" ) { printf "%s:" , } }' |awk -F: '{ print ": " }'
Exemplo de uso:
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( == "inet" ) { print } else if ( == "Link" ) { printf "%s:" , } }' |awk -F: '{ print ": " }'
lo: 127.0.0.1
ppp0: 111.222.333.444
N.B: As saídas são indicativas e não reais.
Cortesia: link
UPDATE
-
LANG=c
foi adicionado aos usos com base em ifconfig
, para que sempre forneça a saída em inglês, independentemente da configuração de localidade.