Questão Como eu encontro meu endereço IP interno?


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 estava usando-os 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 daí.


159
2018-03-07 13:20


origem


@AvatarParto São interfaces voltadas para acesso público, essa questão é sobre redes internas ... - Bruno Pereira
Por curiosidade, o que /etc/network/interfaces tem nele? - Powerlord
Eu sei como usar o comando de mudança de diretório, mas eu não sei como listar os arquivos uma vez lá, como eu faria isso? - Cam Jones
ls irá listar arquivos em um diretório. ls -l vai dar uma lista detalhada. Para listar o conteúdo de um diretório específico, ls -l /etc/network. Para mudar para um diretório e listar o conteúdo cd /etc/network ;ls -l. Para ler o conteúdo de etc/network/interfaces (isso é um arquivo) sudo pico /etc/network/interfaces. (pico é um editor de texto leve - bom para leitura e edição básica e menos intimidante do que vi.) - douggro


Respostas:


Estes comandos lhe dirão todas as informações de 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á executando ou não está conectado


159
2018-03-07 13:32



quando eu logar ele me diz que há algumas atualizações ou upgrades, então eu suponho que ele tem que falar com o site oficial do ubuntu para saber que ele tem atualizações, Então eu acho que minha internet está funcionando. - Cam Jones
@ Skateguy tentar abrir askubuntu.com e por favor imprimir todos ifconfig -a - kamil
Eu não tenho GUI, mas estou prestes a digitá-lo embora. - Cam Jones
Como posso responder às perguntas que suas duas opções apresentam? - Cam Jones
@ Skateguy Primeiro parece que você não tem um servidor dhcp e você terá que definir o seu ip manualmente. você pode nos dizer sua topologia de rede, como você está conectado à internet? e por favor poste a saída do seguinte comando no seu terminal: host askubuntu.com - kamil


Isto é 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 túneis de VPN, etc. e você sempre terá o endereço IP atualmente usado para conexões com a Internet nesse momento (importante quando, por exemplo, você está conectado com ethernet e wifi ou via VPN, etc.).

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

Eu encontrei essa ideia em esta resposta de Collin Anderson.

Eu uso isso no interno roteiro em minha coleção de scripts no GitHub, que você pode instalar com:

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

e usar como:

internalip

ou:

internalip TARGET

e você receberá seu endereço IP que seria usado para conectar com o endereço IP do TARGET. O alvo padrão é 8.8.8.8 qual é o Resolvedor de DNS público do Google e um bom padrão para a 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 destino está em uma rede LAN, VPN ou outra rede especial, caso em que outro IP poderia ser usado para conexões do que o IP padrão para acessar a Internet.

IP externo

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


166
2018-04-03 02:49



esta é uma resposta incrível, obrigado! me salvou muita dor de cabeça! : D - user65165
Este é um truque útil, mas o OP estava perguntando sobre um IP interno, portanto, não seria seguro assumir que ele é roteável para 8.8.8.8. - mc0e
@ mc0e Bom ponto. É por isso meu roteiro leva um argumento opcional para algum outro IP - 8.8.8.8 é apenas o padrão. Na minha resposta eu usei 127.2.3.4 como um exemplo. Você também pode usar algum IP na sua intranet ou em uma VPN. O ponto é que você geralmente não tem 1 endereço IP interno, mas poucos endereços diferentes usados ​​para destinos diferentes. Dessa forma, você pode encontrar o que realmente é usado para conexões com um determinado destino. - rsp
Só para você saber, isso dá o IP externo no Mac. - OZZIE


hostname -I

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


134
2017-08-25 06:29



Perfeito. Tantas respostas complicadas (mas não ruins) ... essa é simplesmente simples. - user1003916
Resposta perfeita .. :) - john400
De acordo com a página man: `-I, --all-ip-addresses Exibe todos os endereços de rede do host. Esta opção enumera todos os endereços configurados em todas as interfaces de rede. A interface de loopback e os endereços locais do link IPv6 são omitidos. Portanto, isso fornecerá o endereço IP na rede à qual você está conectado, mas também o IP da sua máquina, se estiver usando-o como um servidor ethernet ou lxd. No meu caso, dá dois endereços porque eu tenho lxd: 192.168.0.78 e 10.0.3.1 - Sergiy Kolodyazhnyy
Sim. No meu caso, é mais mal 10.0.2.15 172.18.0.1 172.17.0.1 172.20.0.1 172.21.0.1 172.22.0.1 172.19.0.1 porque estou executando alguns contêineres do Docker;) - Alex
Votado porque outras soluções não funcionam, p. Ex. na imagem ubuntu docker crua - noonex


Eu 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 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 $1'
192.168.1.100
127.0.0.1

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

aqui está 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,


18
2018-03-07 21:17



Eu tentaria este método, mas você terá que dividi-lo um pouco mais para eu entender, como em como encontrar ou conhecer um IP válido, sub-rede e uma rota padrão válida. - Cam Jones
Esta é uma atribuição de IP estático para a sua interface de rede, o que significa que se você está atrás de um roteador com sub-rede de 192.168.1.0/24, então você pode pingar um ip ex. 192.168.1.200 e se você não obtiver resposta, vá em frente e use ifconfig nome_da_interface IP_ADDRESS / MASK up Seu gw padrão precisa ser adicionado após a atribuição do IP. - user1007727


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

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

Ele irá 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.


8
2017-10-24 14:14





No caso, o ifconfig comando não exibiu o endereço IP, há 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 Informação de conexão. Network icon options

Isso traz uma janela com algumas informações, incluindo o endereço IP. IP address information


5
2017-09-24 13:09





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 produz uma saída limpa que salva toda a manipulação com grep, sed, awk, cut, perlNão lhe dirá em qual interface você está interessado, mas se você souber disso, então o seguinte lhe dará o IP sem outras informações para limpar:

facter ipaddress_eth0 

1
2017-11-28 15:11





comando ip

Aqui está uma variação de ip addr caminho.

ip tem -o opçã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 -4 opção, vamos ver 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 é exercício simples de análise através da ferramenta de sua escolha. Aqui estou usando python:

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

Mesma coisa, só com aqui string <<< e substituição de comando $()

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

Pessoalmente, eu tenho isso salvo como uma boa função na minha ~/.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


1
2017-09-04 18:32