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

Publicado por Eris Ribeiro Junior em 28/08/2015

[ Hits: 8.039 ]

 


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

Administrando o VMware ESXi pelo navegador

Site com screencasts (pequenos vídeos) de várias distribuições

Teamviewer no CentOS, openSUSE e Ubuntu

Arch Linux - Mídia de instalação via PXE (Internet)

Instalando o Xfce no Kali Linux

Leitura recomendada

Adicionando rotas de forma massiva a partir de um arquivo

Como compartilhar pasta em rede no Ubuntu [vídeo]

Autenticação do Squid no Winbind 2.4 (Debian 8)

Instalação e configuração do ICINGA2 e ICINGA WEB2 no Debian 9

Criando Ponte com Interface Wirelles para Ethernet

  

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 erixtech 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 erixtech 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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts