Comando para determinar meu IP público?

Se eu verificar com o, Eu posso ver meu IP público. Existe algo na linha de comando do Ubuntu que me dará a mesma resposta?

Se você não estiver atrás de um roteador, poderá descobri-lo usando ifconfig.

Se você estiver atrás de um roteador, seu computador não saberá sobre o endereço IP público, pois o roteador faz uma tradução de endereço de rede. Você pode perguntar a algum site o que seu endereço IP público está usando curl ou wget e extraia as informações que você precisa dele:

curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  

ou mais curto

curl https://ipinfo.io/ip

Para encontrar o ip externo, você pode usar serviços externos baseados na web ou usar métodos baseados em sistema. O mais fácil é usar o serviço externo, também o ifconfig as soluções baseadas funcionarão em seu sistema somente se você não estiver atrás de um NAT. os dois métodos foram discutidos abaixo em detalhes.

Encontrando 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. Desde wget está disponível por padrão no Ubuntu, podemos usar isso.
Para encontrar seu ip, use-

$ wget -qO- https://ipecho.net/plain ; echo

Cortesia:

Você também pode usar lynx(navegador) ou curl no lugar de wget com pequenas variações para o comando acima, para encontrar o seu ip externo.

Mear curl para encontrar o ip:

$ curl https://ipecho.net/plain

Para uma melhor saída formatada use:

$ curl https://ipecho.net/plain ; echo

Um método mais rápido (sem dúvida o mais rápido) usando dig com OpenDNS como resolvedor:

As outras respostas aqui passam por HTTP para um servidor remoto. Alguns deles 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 com bastante frequência (desça, mude seu nome, coloque anúncios, pode alterar o formato de saída etc.).

  1. O protocolo de resposta DNS é padronizado (o formato permanecerá compatível).
  2. Serviços historicamente DNS (OpenDNS, DNS público do Google,..) tendem a sobreviver por muito mais tempo e são mais estáveis, escaláveis e geralmente cuidadas do que qualquer novo quadril whatismyip.com o serviço HTTP está quente hoje.
  3. (para aqueles geeks que se preocupam com a micro-otimização), este método deve ser inerentemente mais rápido (seja apenas por alguns micro segundos).

Usando dig com OpenDNS como resolvedor:

$ dig +short myip.opendns.com @resolver1.opendns.com111.222.333.444

Copiado de: https://unix.stackexchange.com/a/81699/14497

Encontrar IP externo sem depender de serviços externos

  • Se você sabe o nome da sua interface de rede

Digite o seguinte em seu terminal:

$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'

No acima, substitua <interface_name> com o nome da sua interface real, por exemplo: eth0, eth1, pp0, etc...

Exemplo De Uso:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'111.222.333.444
  • Se você não souber o nome da sua interface de rede

Digite o seguinte em seu terminal (isso obtém o nome e o endereço ip de cada interface de rede em seu sistema):

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'

Exemplo De Uso:

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'lo: 127.0.0.1ppp0: 111.222.333.444

N. B: As saídas são indicativas e não reais.

Cortesia: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/

ACTUALIZACAO

  1. LANG=c foi adicionado a ifconfig usos baseados, para que sempre forneça a saída em inglês, independentemente da configuração de localidade.

Meu favorito sempre foi :

curl ifconfig.me

simples, fácil de digitar.

Você terá que instalar o curl primeiro ;)

Se ifconfig.me é para baixo tentar icanhazip.com e ou ipecho.net

curl icanhazip.com

ou

curl ipecho.net

icanhazip.com é o meu favorito.

curl icanhazip.com

Você pode solicitar IPv4 explicitamente:

curl ipv4.icanhazip.com

Se você não tem curl você pode usar wget Sim:

wget -qO- icanhazip.com

Achei tudo irritante e lento, então escrevi o meu próprio. É simples e rápido.

Sua API está em http://api.ident.me/

Exemplo:

curl ident.mecurl v4.ident.mecurl v6.ident.me

Projeto técnico: em DNS, ident.me tem registros A e AAAA, v4.ident.me só tem um registro, e v6.ident.me só tem um registro AAAA. As portas 443 e 80 nesses IPs são servidas pelo nginx, com SSL usando certificados fornecidos por letsencrypt.org através do certbot, e com a seguinte configuração (trecho):

server {  […]  server_name .ident.me;  location / {    default_type text/plain;    return 200 $remote_addr;    add_header Access-Control-Allow-Origin "*";    add_header Cache-Control "no-cache, no-store, must-revalidate";  }}

Você pode usar uma solicitação DNS em vez de uma solicitação HTTP para descobrir seu IP público:

$ dig +short myip.opendns.com @resolver1.opendns.com

Ele usa resolver1.opendns.com servidor dns para resolver o mágico myip.opendns.com nome do host para sua endereço ip.

Amazon AWS

curl https://checkip.amazonaws.com

Saída da amostra:

123.123.123.123

Também funciona no navegador: http://checkip.amazonaws.com

Eu gosto porque:

  • ele retorna apenas o IP de texto simples no corpo da resposta, nada mais
  • é de um provedor bem conhecido que é improvável que fique offline tão cedo

O que estou usando é :

wget -O - -q icanhazip.com

Sim, você pode ter ip :-)

Digite isso exatamente, pressione Enter quando indicado:

telnet ipecho.net 80Enter
GET /plain HTTP/1.1Enter
HOST: ipecho.net Enter
BROWSER: web-kitEnter
Enter

Isso envia manualmente uma solicitação HTTP, que retornará seu IP na parte inferior de um HTTP/1.1 200 OK reply

Exemplo de saída:

$ telnet ipecho.net 80Trying 146.255.36.1...Connected to ipecho.net.Escape character is '^]'.GET /plain HTTP/1.1HOST: ipecho.netBROWSER: web-kitHTTP/1.1 200 OKDate: Tue, 02 Jul 2013 07:11:42 GMTServer: ApacheExpires: Mon, 26 Jul 1997 05:00:00 GMTCache-Control: no-cachePragma: no-cacheVary: Accept-EncodingTransfer-Encoding: chunkedContent-Type: text/htmlf111.222.333.4440

Para isso, ATORDOAR foi inventado. Como cliente, você pode enviar uma solicitação a um servidor de atordoamento disponível publicamente e fazer com que ele devolva o endereço IP que vê. Tipo do nível baixo whatismyip.com como ele não usa HTTP e não servidores DNS inteligentemente criados, mas o protocolo de atordoamento incrivelmente rápido.

Mear stunclient

Se você tem stunclient fornecer (apt-get install stuntman-client no debian / ubuntu) você pode simplesmente fazer:

$stunclient stun.services.mozilla.comBinding test: successLocal address: A.B.C.D:42541Mapped address: W.X.Y.Z:42541

onde A.B.C.D é o endereço IP da sua máquina na rede local e W.X.Y.Z é os servidores de endereço IP como sites vêem de fora(e aquele que você está procurando). Mear sed você pode reduzir a saída acima para apenas um endereço IP:

stunclient stun.services.mozilla.com |    sed -n -e "s/^Mapped address: \(.*\):.*$/\1/p"

No entanto, sua pergunta era como encontrá-lo usando a linha de comando, que pode excluir o uso de um cliente STUN. Então eu me pergunto...

Mear bash

Uma solicitação de atordoamento pode ser feita à mão, enviada para um servidor de atordoamento externo usando netcat e ser pós-processado usando dd, hexdump e sed comer:

$echo -en '\x00\x01\x00\x08\xc0\x0c\xee\x42\x7c\x20\x25\xa3\x3f\x0f\xa1\x7f\xfd\x7f\x00\x00\x00\x03\x00\x04\x00\x00\x00\x00' |    nc -u -w 2 stun.services.mozilla.com 3478 |    dd bs=1 count=4 skip=28 2>/dev/null |    hexdump -e '1/1 "%u."' |    sed 's/\.$/\n/'

O echo define uma solicitação de atordoamento binária (0x0001 indica solicitação de vinculação) com comprimento 8 (0x0008) com o cookie 0xc00cee e algumas coisas coladas do wireshark. Apenas os quatro bytes que representam o IP externo são retirados da resposta, limpos e impressos.

Trabalho, mas não recomendado para o uso da produção: -)

P. S. Muitos servidores STUN estão disponíveis, pois é uma tecnologia central para SIP e WebRTC. Usar um da Mozilla deve ser seguro em termos de privacidade, mas você também pode usar outro: STUN server list

“ter IP dinâmico”, “SSH usando algum outro sistema na internet”, “o comando que exibirá o IP público atual”. Você vê o problema de frango / ovo aqui? Como você seria capaz de executar comandos em um servidor remoto sem saber seu endereço? Você pode estar mais interessado em serviços como no-ip.com / DynDNS.org.

PS ip at DuckDuckGo (sem linha de comando, mas sem big brother G Nem)

Talvez esta seja uma pergunta separada, mas gostaria de ver um alerta quando meu endereço IP público mudar. Por enquanto, estou apenas usando as seguintes respostas em um crontab com ‘notify-send’.

não se pode SSH sem conhecer o IP público meu amigo… dynDNS custa muito e não-ip trabalhos difíceis, mas a situação não permite isso… de qualquer forma, a pergunta já foi respondida… obrigado pela sua sugestão

grandes soluções abaixo. Para Centos use ` ‘ifconfig eth1 / sed-NRE’ / ^ [ ^ ] + / {n; s / ^ ([^]+).* inet * ([ ^ ]+).*/ \ 2 / p}" onde eth1 é o dispositivo de rede o interesse, você pode omitir a string ’ et1 ’ para mostrar todos os ips de todos os adaptadores. Em vez de '\ 2 ‘você pode escrever’ \1 \ 2 ’ para mostrar os nomes de cada adaptador também.

Nenhuma das respostas mostra a abordagem correta. Como Não tenho reputação suficiente para postar uma resposta, postarei um comentário sobre como obtê-la sem depender de serviços externos. Basta executar no terminal ’ $ hostname --IP-address`