Descobrindo o endereço IP externo de cada link via terminal

Publicado por Perfil removido em 28/08/2015

[ Hits: 14.828 ]

 


Descobrindo o endereço IP externo de cada link via terminal



Nesta dica usaremos o curl, grep e awk .

No terminal execute o comando abaixo, alterando a interface de rede ao testar cada link conforme as existentes em seu ambiente, como nos exemplos abaixo.

Isto retornará em cada execução, apenas o endereço IP externo "de cada interface".

curl --interface eth0 http://www.meuip.com.br/ | grep 'Meu IP:' | awk -F' ' '{print $12}'
$ curl --interface eth1 http://www.meuip.com.br/ | grep 'Meu IP:' | awk -F' ' '{print $12}'
$ curl --interface ethN http://www.meuip.com.br/ | grep 'Meu IP:' | awk -F' ' '{print $12}'


Isso nos será útil ao menos para as seguintes situações:
  • Quando possuir mais de um link com a internet com endereço IP dinâmico, para saber qual o endereço IP externo atual em cada link.
  • Para confirmar a sua documentação da rede e testar se eventuais rotas que tenha definido estão corretas, caso possua IP fixo nos links.

Para mais opções sobre os comandos utilizados:

man curl
$ man grep
$ man awk


Outras dicas deste autor

Autoestudo e certificação C/C++

Doom 3 no Fedora x86_64

Instalando Discord no Fedora 40

Descompactando arquivos 7z e 7zip no Slackware 13

Renomeando arquivos "Codificação Inválida" e um Bônus

Leitura recomendada

Como desativar o IPv6 no Debian 8

IPERF - Diagnosticar sua rede

Ingressar (join) CentOS 7 em domínio Samba 4 + SSH + sudo

Como fixar IP estátco no Debian 8 com o serviço Connman

Tor e netcat-openbsd em automação

  

Comentários
[1] Comentário enviado por kram3r em 29/08/2015 - 10:07h

Mais simples que usar o meuip.com.br é utilizar o eth0.me

chronos@localhost / $ curl --interface mlan0 eth0.me
189.107.177.2

[2] Comentário enviado por removido em 29/08/2015 - 10:26h


[1] Comentário enviado por kram3r em 29/08/2015 - 10:07h

Mais simples que usar o meuip.com.br é utilizar o eth0.me

chronos@localhost / $ curl --interface mlan0 eth0.me
189.107.177.2


Este eu não conhecia, também uso o ifconfig.me/ip, mas quando escrevi a dica estava offline e acabei usando o meuip.com.br.

Obrigado por completar.

Edit:

Abaixo outros sites que poderiam ser utilizados, com a vantagem usar apenas o curl, tornando o comando mais simples para memorizar:


curl --interface <IFACE> ifconfig.co
curl --interface <IFACE> eth0.me <- Dica do @kram3r
curl --interface <IFACE> ifconfig.me/ip
curl --interface <IFACE> icanhazip.com

[3] Comentário enviado por wagnerfs em 30/08/2015 - 11:24h

Parabéns pela dica!
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782

[4] Comentário enviado por SMarcell em 31/08/2015 - 01:46h


Você também poderia utilizar o dig consultando diretamente servidores públicos de DNS como:

# Google Public DNS
$ dig -t txt o-o.myaddr.1.google.com @ns1.google.com +short

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

[5] Comentário enviado por removido em 31/08/2015 - 09:05h


[4] Comentário enviado por SMarcell em 31/08/2015 - 01:46h


Você também poderia utilizar o dig consultando diretamente servidores públicos de DNS como:

# Google Public DNS
$ dig -t txt o-o.myaddr.1.google.com @ns1.google.com +short

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


Uma boa forma também para obter o IP externo, mas acredito que não serviria neste caso.

Usei o curl, por conseguir com ele definir a interface por onde a conexão sera feita, ao que vi no manual não consigo isso diretamente com o dig, correto?


[6] Comentário enviado por SMarcell em 31/08/2015 - 10:46h


Ops, falha minha! Realmente não há como informar ao dig qual interface de saída utilizar diretamente, mas você pode usar a opção '-b' e especificar o endereço IP associado a interface que deseja usar para consulta.
Por exemplo, supondo que o endereço 192.168.1.254 esteja associado a interface eth0, você poderia fazer assim:

$ dig -b 192.168.1.254 myip.opendns.com @resolver1.opendns.com +short

[7] Comentário enviado por Tacioandrade em 04/09/2015 - 22:40h

Excelente dica, para facilitar minha vida, criei com base nela um shell script, onde recebe como parâmetro a interface de saída, melhor que ter que decorar o comando ou vim buscar na net quando quiser usar. ;)

#!/bin/bash
if [ "$1" ]
then
curl --interface $1 http://www.meuip.com.br/ | grep 'Meu IP:' | awk -F' ' '{print $12}'
else
echo "Digite a interface de saída desejada"
fi

Att. Tácio Andrade.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts