Existe uma maneira de obter meu endereço IP público (WAN) na linha de comando? Estou atrás de um roteador (rede LAN), com um endereço IP dinâmico atribuído pelo meu provedor.
Eu vi soluções usando um serviço da web externo (como ifconfig.me
), mas quero saber se posso fazê-lo sem um serviço externo.
command-line
internet
ip
dynamic-ip
user61954
fonte
fonte
Respostas:
Supondo que seu sistema tenha 2 dispositivos ethernet,
eth0
eeth1
eeth0
está conectado à sua LAN, digamos IPs 192.168.1.X e seueth1
dispositivo está conectado ao seu ISP (WAN), você vai querer usar o seguinteifconfig
comando para obter o seu IP para o lado da WAN.NOTA: As primeiras 2 maneiras assumem que você as está executando contra um computador que possui 2 dispositivos ethernet e que um deles está conectado ao seu ISP (modem a cabo e / ou modem DSL). Neste cenário, o dispositivo ethernet (eth1) será configurado com o seu endereço IP na internet (WAN IP).
1a via
Você também pode usar o
ip
comando.Ò caminho
Se você precisa descobrir isso de um sistema que fica apenas na LAN, você pode configurar uma chave ssh sem senha e adicioná-la a uma conta em sua máquina LAN para que possa acessar remotamente o sistema com o acesso à WAN dessa forma.
3a via
Se você não conseguir fazer o ssh na caixa que tem acesso à WAN e estiver usando um roteador / switch doméstico, como uma caixa Linksys ou Netgear. Você pode obter o IP desse dispositivo por meio de uma página de status HTTP. Eu fiz isso no passado também, algo semelhante ao que é descrito neste post do forum whatismyip.com .
NOTA: Essa abordagem é altamente dependente de qual roteador / switch você possui, seja uma marca da Linksys, Netgear, etc. Cada um terá sua própria página exclusiva com o IP da WAN.
Ô caminho
Enviando uma consulta contra um site externo que relatará seu endereço IP da WAN.
NOTA: Estou ciente de que a pergunta original mencionou que eles estavam procurando alternativas para essa abordagem, mas estou colocando-a aqui para que essa resposta cubra todas as bases.
Informações adicionais estão disponíveis aqui: COMO: Verificar seu endereço IP externo na linha de comando
fonte
eth*
os dispositivos terão o IP da WAN. A menos que seu roteador suporte ssh, ele tem acesso, e ifconfig, isso não vai funcionar. Não downvoting, mas só assim alguém tentando fazer isso está ciente.Se o seu sistema tiver o curl instalado (a maioria faz), você pode usar
fonte
Quando você está atrás de um roteador NAT com UPNP, você pode usar o miniupnpc para detectar o endereço IP do wan:
Você poderia usá-lo em um script, por exemplo para o cron como:
fonte
Buscar informações do seu roteador via ssh ou curl.
Eu uso o curl para pedir dyndns para o meu ip público, mas esse comando não parece aplicável para você, certo?
curl http://checkip.dyndns.org 2> /dev/null| perl -pe 's,.*Address: (\d+\.\d+\.\d+\.\d+).*,$1,'
fonte
Muito provavelmente, o roteador deve fornecer uma maneira de obter o IP externo se nenhum serviço externo deve ou pode ser usado (como algumas outras respostas já indicadas). Para serviços externos, na maioria das outras respostas, um serviço da web é usado. Esta resposta no Unix SE sugere usar o DNS.
Por exemplo, usando
dig
com OpenDNS como resolvedor:fonte
curl ident.me
como estamos contando com um serviço específico (emmyip.opendns,com
é causado pelo servidor DNS)Infelizmente, não há como detectar mecanismos como o NAT que não envolvam o contato com um serviço remoto. NAT é por natureza completamente transparente para o usuário, além de serviços quebrados, e não há protocolo padrão para a descoberta de NAT.
Mas no que diz respeito aos serviços externos, tenho que sugerir o rápido e simples que eu escrevi, ident.me, que você pode usar tanto para IPv4 quanto para IPv6; pela sua forma mais simples, você pode usar
curl ident.me
e a API completa está documentada em http://api.ident.me/fonte
Se o seu roteador suporta NAT PMP (Port Mapping Protocol), você pode recuperar seu IP público usando o natpmp.
Existe uma interface de linha de comando para a biblioteca natpmp do linux chamada natpmpc. No Ubuntu, é no natpmp-utils pacote. Meu roteador não parece suportar natpmp, então não tenho certeza se o utilitário natpmpc retornará seu IP público.
fonte
O comando linux que você está procurando é
ifconfig
assumindo que você está diretamente conectado à internet.Caso contrário, e acessando através de proxies ou roteamento especial, a maneira mais fácil (como os outros indicam) é acessar / acessar outro host e verificá-lo de lá.
Além disso, você pode gostar de discutir essa questão com seu administrador de sistemas de vizinhança amigável.
fonte
ifconfig
está obsoleto.ifconfig
data de lançamento mais recente. Agora olhe para oìproute2
Último lançamento. Quanto a uma fonte, veja lartc.org/howto/lartc.iproute2.html#LARTC.IPROUTE2.WHYsed que, se você precisar
fonte
curl icanhazip.com