Como encontro meu endereço IP interno?

144

Eu tenho o servidor Ubuntu 12.04 instalado, então não tenho GUI. Quando eu faço o comando ifconfig, não consigo encontrar meu endereço IP interno. Ele diz inet addr: 127.0.0.1.

Aqui está a saída de ifconfig -a :

eth0   link encap:Ethernet  HWaddr 00:06:4f:4a:66:f0
    BROADCAST MULTICAST  MTU:1500  Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth1   link encap:Ethernet  HWaddr 00:16:ec:05:c8:9c 
    BROADCAST MULTICAST  MTU:1500  Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo     Link encap:Local Loopback
    inet addr 127.0.0.1  Mask:255.0.0.0
    inet6 addr:  ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536  Metric:1
    RX packets:1800 errors:0 dropped:0 overruns:0 frame:0
    Tx packets:1800 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:0
    RX bytes:143896 (143.b KB)  TX bytes:143896 (143.8 KB)

aqui estão os conteúdos de etc / network / interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Se alguém puder editar isso para mim, o conteúdo de etc / network / interfaces deve estar em linhas separadas.

A saída do host askubuntu.com foi:

;; connection timed out; no servers could be reached.

Eu configurei o owncloud e o webmin há alguns meses e os usei por um mês sem problemas. Acho que a energia disparou um dia há dois meses e nunca liguei o servidor até ontem. Eu não fiz nada que teria afetado a configuração da internet Então, eu não tenho certeza porque não funciona mais. No que diz respeito à minha topologia de rede, tenho uma placa de rede pci-e para o pc. A linha ethernet vai da placa de rede para um switch e depois para um modem / roteador a partir dali.

    
por Cam Jones 07.03.2014 / 14:20

8 respostas

143

Estes comandos lhe dirão todas as informações da rede

ifconfig -a

ou

ip addr show

Se, como você diz, isso só lhe dá 127.0.0.1, então há duas opções:

  1. Sua placa de rede não está conectada ou não é reconhecida pelo sistema

  2. Seu servidor DHCP de rede não está em execução ou não está conectado

por kamil 07.03.2014 / 14:32
154

Isso é o que eu recomendo atualmente:

ip route get 8.8.8.8 | awk '{print $NF; exit}'

A vantagem desse comando é que você não precisa saber qual interface está usando (eth0? eth1? ou talvez wlan0?), você não precisa filtrar endereços de host local, ou endereços do Docker, ou VPN Túneis etc e você sempre terá o endereço IP que é usado atualmente para conexões com a Internet nesse exato momento (importante quando você está conectado com ethernet e wifi ou via VPN etc.).

Isso testará não apenas que você tem um IP correto configurado em alguma interface (como a análise da saída de ifconfig ), mas também que você tem a tabela de roteamento configurada para usá-lo corretamente.

Eu encontrei essa ideia em esta resposta por Collin Anderson .

Eu o uso no script internalip em minha coleção de scripts no GitHub , com a qual você pode instalar:

wget https://rawgit.com/rsp/scripts/master/internalip
chmod a+x internalip

e use como:

internalip

ou:

internalip TARGET

e você receberá seu endereço IP que seria usado para conectar ao endereço IP TARGET . O destino padrão é 8.8.8.8 , que é o resolvedor de DNS público do Google e um bom padrão para o Internet.

Mas se você executá-lo com um IP diferente:

internalip 127.2.3.4

Então você vai ter:

127.0.0.1

porque esse é o seu endereço IP que seria usado para conectar com 127.2.3.4 na interface de loopback. É útil quando seu alvo está em uma LAN, VPN ou outra rede especial, caso em que algum outro IP pode ser usado para conexões do que o IP padrão para acessar a Internet.

IP externo

Para verificar seu endereço IP externo (aquele que os servidores na Internet veem quando você se conecta a eles - que pode ser diferente do endereço IP interno descrito aqui), consulte esta resposta .

    
por rsp 03.04.2015 / 04:49
118
hostname -I

Isso lhe dará apenas o endereço IP sem qualquer informação extra.

    
por Sarath Somana 25.08.2015 / 08:29
18

Acho que vale a pena mencionar que a execução do ifconfig junto com a opção -a exibirá todas as interfaces, quer a interface tenha ou não um IP.

executando o ifconfig sozinho, exibirá apenas interfaces com IPs atribuídos.

Aqui está um truque legal que você pode usar para exibir apenas IPs usando Perl.

# ifconfig | perl -nle'/dr:(\S+)/ && print '
192.168.1.100
127.0.0.1

A sua placa de rede é reconhecida pelo sistema, por isso é que ela aparece eth0 e eth1

aqui é uma maneira rápida de atribuir IP à sua interface, use IP / Subnet válido de acordo.

 ifconfig eth0 192.168.1.200/24 up 

então precisamos adicionar uma rota padrão

route add default gw 192.168.1.1

Melhor,

    
por user1007727 07.03.2014 / 22:17
8

Este comando mostrará todos os endereços IP de um único dispositivo:

dev=eth0
ip addr show $dev | awk '/inet/ {print }' | cut -d/ -f1

Ele imprimirá uma ou duas linhas de saída. O primeiro é o endereço inet / IPv4 e o outro é inet6 / IPv6 se o seu sistema estiver configurado para suportar isso.

    
por Aaron Digulla 24.10.2014 / 16:14
5

No caso, o comando ifconfig não exibiu o endereço IP, existe uma maneira muito simples e fácil de descobrir o endereço IP da máquina Ubuntu através da GUI. Siga os passos abaixo:

Clique no ícone de rede na área de notificação e clique em Informações da conexão .

Isso abre uma janela com algumas informações, incluindo o endereço IP.

    
por Ibungo 24.09.2015 / 15:09
1

Há muitas boas respostas aqui para escolher, mas eu pensei em apontar facter que é geralmente, mas não necessariamente usado com fantoche para coletar vários fatos sobre o sistema. A principal vantagem do facter é que ele fornece uma saída limpa que salva toda a manipulação com grep , sed , awk , cut , perl , etc. Não vai dizer interface que você está interessado, mas se você sabe disso, então o seguinte dá-lhe o IP sem outra sujeira para limpar:

facter ipaddress_eth0 
    
por mc0e 28.11.2015 / 16:11
1

comando ip

Aqui está uma variação do ip addr way.

A opção

ip tem -o , que permite colocar todas as informações em uma única linha - isso é útil para análise com ferramentas como awk ou perl . Em combinação com a opção -4 , veremos apenas endereços IPv4. Assim, a saída seria algo como isto (note - replace wlan7 com a interface que você deseja verificar):

$ ip -4 -o addr show wlan7
3: wlan7    inet 192.168.0.78/24 brd 192.168.0.255 scope global dynamic wlan7\       valid_lft 85654sec preferred_lft 85654sec

Como você pode ver, o endereço IP é a quarta coluna / palavra na saída. O resto, é simples exercício de análise através da ferramenta da sua escolha. Aqui estou usando python:

ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" 

A mesma coisa, somente com a string <<< e a substituição de comandos $()

python -c "import sys;print sys.stdin.readlines()[0].split()[3]"  <<< $(ip -4 -o addr show wlan7)

Pessoalmente, eu salvei isso como uma boa função no meu ~/.bashrc , então menos digitação é feita.

wlan_ip() {
    ip -4 -o addr show wlan7 | python -c "import sys;print sys.stdin.readlines()[0].split()[3]" 
} 

A versão de Perl e Ruby é um pouco mais curta:

$ ip -4 -o addr show  wlan7 | perl -lane 'print $F[3]'                         
192.168.0.78/24

$ ip  -4 -o addr show wlan7 | ruby -n -e 'print $_.split()[3]'                 
192.168.0.78/24

Wireshark

Se você estiver familiarizado com o uso de ferramentas de análise de rede, provavelmente sabe que, para obter seu endereço IP, tudo o que precisa é limpar o cache do navegador, iniciar a captura do Wireshark na interface específica e procurar por http GET pacotes sendo transmitidos. A coluna de destino mostrará seu endereço IP

    
por Sergiy Kolodyazhnyy 04.09.2016 / 20:32

Tags