Se eu verificar com o google , posso ver meu IP público. Existe algo na linha de comando do Ubuntu que me dará a mesma resposta?
networking
kfmfe04
fonte
fonte
notify-send
.ifconfig eth1 | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*inet *([^ ]+).*/\2/p}'
que eth1 é o dispositivo de rede de 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.Respostas:
Se você não estiver atrás de um roteador, poderá descobrir 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 conversão de endereço de rede. Você pode perguntar a algum site qual seu endereço IP público está usando
curl
ouwget
extrair dele as informações necessárias:ou mais curto
fonte
curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
Outras possibilidades estão listadas aqui: go2linux.org/what-is-my-public-ip-address-with-linuxPara encontrar o ip externo, você pode usar serviços externos baseados na Web ou métodos baseados no sistema. Quanto mais fácil for usar o serviço externo, também as
ifconfig
soluções baseadas funcionarão no seu sistema somente se você não estiver atrás de umNAT
. os dois métodos foram discutidos abaixo em detalhes.Localizando 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. Como
wget
está disponível por padrão no Ubuntu, podemos usá-lo.Para encontrar seu ip, use-
Cortesia :
Você também pode usar
lynx
(navegador) oucurl
no lugar dewget
pequenas variações do comando acima, para encontrar seu ip externo.Usando
curl
para encontrar o ip:Para uma saída melhor formatada, use:
Um método mais rápido (sem dúvida o mais rápido) usando
dig
withOpenDNS
como resolvedor:Copiado de: https://unix.stackexchange.com/a/81699/14497
Localizando IP externo sem depender de serviços externos
Digite o seguinte no seu terminal:
No exemplo acima, substitua
<interface_name>
com o nome de sua interface real, por exemplo:eth0
,eth1
,pp0
, etc ...Exemplo de uso:
Digite o seguinte no seu terminal (isso obtém o nome e o endereço IP de cada interface de rede no seu sistema):
Exemplo de uso:
Nota: as saídas são indicativas e não reais.
Cortesia: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
ATUALIZAR
LANG=c
foi adicionado aosifconfig
usos baseados, para que sempre forneça a saída em inglês, independentemente da configuração da localidade.fonte
sudo apt-get install wget
-w
opção de onda em vez de echo :)curl -w '\n' ident.me
O meu favorito sempre foi:
simples, fácil de digitar.
Você precisará instalar o curl primeiro;)
Se o ifconfig.me estiver desativado, tente icanhazip.com e ou ipecho.net
ou
fonte
ifconfig.me
parece um pouco mais lento queipecho.net
.curl
mas temwget
:wget -U curl -qO- ifconfig.me
icanhazip.com é o meu favorito.
Você pode solicitar o IPv4 explicitamente:
Se você não possui,
curl
pode usarwget
:fonte
Eu achei tudo chato e lento, então escrevi o meu. É simples e rápido.
Sua API está em http://api.ident.me/
Exemplos:
fonte
time curl http://checkip.amazonaws.com
->0.91s
vs.241s
paraident.me
Vamos apenas rezar AWS does not ir para baixo;)Você pode usar uma solicitação DNS em vez de HTTP para descobrir seu IP público:
Ele usa o
resolver1.opendns.com
servidor DNS para resolver omyip.opendns.com
nome do host mágico para o seu endereço IP.fonte
curl icanhazip.com
. Média dacurl
versão: 174ms. Média para a versão somente DNS: 9ms. ~ 19x mais rápido. Veja também: unix.stackexchange.com/a/81699/8383curl
ele fosse mais lento do quedig
. Mesmo se eles fossem reescritos para serem o mais parecidos possível,curl
ainda seriam mais lentos; ele usa HTTP ( incluindo DNS) edig
usa apenas DNS.Amazon AWS
Saída de amostra:
Eu gosto disto porque:
fonte
O que eu estou usando é:
Sim, você pode ter ip :-)
fonte
curl icanhazip.com
às vezeswget
seja o único disponível, mas às vezes também nãowget
esteja disponível ecurl
seja sua única opção (como o OS / X). De qualquer maneiracurl icanhazip.com
é quase tão fácil quantocurl ifconfig.me
muito mais engraçado ;-)Digite exatamente isso, pressione Enteronde indicado:
telnet ipecho.net 80
EnterGET /plain HTTP/1.1
EnterHOST: ipecho.net
EnterBROWSER: web-kit
EnterEnter
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:
fonte
Outro rápido (pode muito bem ser o mais rápido, relativamente)
fonte
Para isso, o STUN foi inventado. Como cliente, você pode enviar uma solicitação para um servidor STUN disponível ao público e devolver o endereço IP que vê. É o nível mais baixo de whatismyip.com, pois ele não usa servidores HTTP e DNS inteligentes, mas o protocolo STUN, extremamente rápido.
Usando
stunclient
Se você
stunclient
instalou (apt-get install stuntman-client
no debian / ubuntu), você pode simplesmente:onde
A.B.C.D
está o endereço IP da sua máquina na rede local eW.X.Y.Z
os servidores de endereços IP, como os sites veem de fora (e o que você está procurando). Usandosed
você pode reduzir a saída acima para apenas um endereço IP:No entanto, sua pergunta foi como encontrá-lo usando a linha de comando, o que pode excluir o uso de um cliente STUN. Então eu me pergunto ...
Usando
bash
Uma solicitação STUN pode ser artesanal, enviada para um servidor STUN externo usando
netcat
e ser pós-processada usandodd
,hexdump
esed
assim:O eco define uma solicitação de STUN binária (0x0001 indica solicitação de ligação) com o comprimento 8 (0x0008) com o cookie 0xc00cee e alguns itens colados do wireshark. Somente os quatro bytes que representam o IP externo são retirados da resposta, limpos e impressos.
Funcionando, mas não recomendado para uso em produção :-)
PS Muitos servidores STUN estão disponíveis, pois é uma tecnologia central para SIP e WebRTC. O uso de um da Mozilla deve ser seguro em termos de privacidade, mas você também pode usar outro: lista de servidores STUN
fonte
Eu tenho um serviço estúpido para isso por telnet. Algo assim:
Sinta-se livre para usá-lo.
fonte
Você pode ler uma página web usando apenas bash, sem
curl
,wget
:fonte
checkip.amazonaws.com
é o mais rápido para mimPara aqueles de nós com acesso de login aos nossos roteadores, usar um script para perguntar ao roteador qual é o endereço IP da WAN é a maneira mais eficiente de determinar o endereço IP externo. Por exemplo, o seguinte script python imprime o IP externo do meu roteador Medialink MWN-WAPR300N:
Observe que isso não é muito seguro (como é o caso das credenciais de texto sem formatação e do logon na maioria dos roteadores) e certamente não é portátil (precisa ser alterado para cada roteador). No entanto, é muito rápido e uma solução perfeitamente razoável em uma rede doméstica fisicamente segura.
Para personalizar o script para outro roteador, recomendo usar o complemento tamperdata no firefox para determinar quais solicitações HTTP devem ser feitas.
fonte
router = subprocess.check_output(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2]
.Estes obterão os IPs locais:
ou para saída mais curta:
Além disso
e provavelmente:
Isso deve obter o IP externo
NB Se você não se importa em instalar
curl
, também:fonte
ifconfig | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*addr: *([^ ]+).*/\1,\2/p}'
irá imprimir as interfaces locais e correspondentes V4 IP doifconfig | sed -nre '/^[^ ]+/{N;N;s/^([^ ]+).*addr: *([^ ]+).*addr: *([^ ]+).*/\1,\2,\3/p}'
- IPs v4 e v6.Muitos roteadores domésticos podem ser consultados pelo UPnP:
Então, grep o endereço IP da resposta.
fonte
Se você estiver usando DD-WRT , isso funcionará para mim:
ou
Onde 192.168.1.1 é o endereço IP da LAN do gateway / roteador do roteador DD-WRT.
O componente -s significa silencioso (ou seja, não mostra as informações de progresso da ondulação).
fonte
Se você instalou o lynx no tipo Ubuntu
fonte
curl bot.whatismyipaddress.com
funciona tambémuse
ip
!procure o adaptador relevante (não
lo
e geralmenteeth0
) e localize o endereço IP próximoinet
.fonte
Talvez eu esteja um pouco atrasado, mas o inxi pode fazer isso com bastante facilidade.
Instalar
inxi
Em seguida, execute o seguinte comando
Exemplo com minhas informações bloqueadas usando a
z
opção de copiar e colar em sites como este:Onde diz que
<filter>
é onde o seu endereço WAN IP, IPv4, MAC, etc. apareceráfonte
Basta emitir um traceroute para qualquer site ou serviço.
A linha 2 sempre parece ser meu endereço IP público depois de passar pelo gateway do roteador.
Então, faça um comando bash.
E a saída ...
Eu não acho que confiar em scripts PHP e o tipo seja uma boa prática.
fonte
Um comando sem dependências, exceto 8.8.8.8, sendo um DNS do Google:
fonte