Qual comando baseado em * nix posso usar para encontrar meu IP externo?


Respostas:



8
dig + short myip.opendns.com

Isso só funciona se você estiver usando o OpenDNS como seu servidor DNS.

Se não estiver, um destes deve funcionar:

dig + short myip.opendns.com @ 208.67.222.222
dig + short myip.opendns.com @ 208.67.220.220
dig + short myip.opendns.com @ 208.67.222.222 @ 208.67.220.220

1
Não funciona no meu MacOS 10.5, Ubuntu 8.04 ou Ubuntu 9.04.
de Drew Stephens

Interessante que isso acontece no meu Ubuntu 8.10.
Brad Gilbert

Provavelmente é porque eu uso opendns.
21420 Brad Gilbert

+1 por usar o DNS para descobrir um IP (em vez de http). Você também pode especificar o servidor DNS usando seu nome, por exemplo, @resolver1.opendns.com(para facilitar a leitura)
JFS


2
lynx -dump http://www.pcmesh.com/ip-check.cgi | awk '/REMOTE_ADDR/{print $2}'

2

É preciso usar os servidores do OpenDNS para usar isso ... Você pode consultar um determinado servidor DNS com dig como este:

dig + short myip.opendns.com @ 208.67.222.222

2

Você pode usar curl para obter a página de algo como whatismyip e depois retirar as peças. Eu usei whatismyipaddress.com neste exemplo ... obviamente os campos serão diferentes com serviços diferentes.

curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }'

1

Eu apenas corro um traceroute para algum lugar na internet e procuro o salto para fora da nossa rede local.

talvez haja uma maneira melhor?




0

você pode usar o comando ifconfig para listar todas as interfaces e seus endereços IP associados.

então, se você sabe que sua interface da Internet é ppp0, pode executar

$ ifconfig ppp0
ppp0 Link encap: protocolo ponto a ponto
          endereço inet: XXXX.X PtP: AAAA Máscara: 255.255.255.255
          UP POINTOPOINT FUNCIONANDO NOARP MULTICAST MTU: 1444 Métrico: 1
          Pacotes RX: 198986 erros: 0 eliminados: 0 excedentes: 0 quadro: 0
          Pacotes TX: 122929 erros: 0 eliminados: 0 excedentes: 0 transportadora: 0
          colisões: 0 txqueuelen: 3
          Bytes RX: 134195571 (127,9 MiB) Bytes TX: 17101701 (16,3 MiB)

XXXX será o seu endereço IP. AAAA é o endereço IP do próximo salto.

você pode pós-processar a saída do ifconfig com grep / awk / sed / cut / perl / o que for para extrair apenas o IP.

outra alternativa, se você tiver as ferramentas do iproute instaladas, é usar o comando ip. por exemplo

$ ip addr list ppp0
21842: ppp0: mtu 1444 qdisc htb state UNKNOWN qlen 3
    link / ppp
    escopo inet XXXX AAAA / 32 global ppp0

provavelmente é mais fácil de ler e certamente mais fácil de analisar:

$ ip addr list ppp0 | awk '/ inet / {print $ 2}'
XXXX

- Não há chance de que qualquer IP em ifconfig não irá corresponder IP real da Internet (no caso de binat) - No FreeBSD não há nenhum pacote iproute2, comando para ip não é aplicável
SaveTheRbtz

verdade, eu não uso o NAT, então nunca me ocorreu que ... parecia-me "errado" usar um serviço externo para obter informações sobre as quais você pode consultar seu próprio sistema. mesmo com o NAT, eu ainda preferiria descobrir como consultar o roteador que está executando o NAT (talvez por meio de uma consulta SNMP) do que confiar em um serviço externo que pode ou não estar disponível quando necessário.
18285

@ Craig, sua abordagem está bem. No entanto, não é um IP externo, a menos que você possa alcançar esse valor de fora. Você não tem que confiar em um ponto externo para esta resposta. A idéia é encontrar um ponto externo confiável (pelo menos mais que o seu ponto de perímetro) para a consulta. O OpenDNS é um bom ponto.
1919

@nik: o único caso provável em que o IP do seu roteador de borda não é o IP externo é quando você está atrás de várias camadas de NAT ... nesse caso, a solução correta é mudar para um serviço não danificado o mais rápido possível . Além disso, o problema de buscar um URL para descobrir seu IP é que ele apenas informa o IP do host que realmente o busca - o que pode ser um proxy que retira os cabeçalhos do Via.
18285
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.