Como faço para encontrar meu endereço IP interno?

Eu tenho o Ubuntu server 12.04 instalado, então não tenho GUI. Quando 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 interfaceauto loiface lo inet loopback# The primary network interfaceauto eth0iface eth0 inet dhcp

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

A saída do host askubuntu.com foi:

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

Eu configurei owncloud e webmin alguns meses atrás e estava usando-os por um mês sem problemas. Acho que a energia desligou um dia 2 meses atrás e nunca liguei o servidor novamente até ontem. Eu não fiz nada que teria afetado a configuração da internet, então não tenho certeza por que isso 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, em seguida, para um modem/roteador a partir daí.

hostname -I

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

Esses comandos informarão todas as informações da rede

ip add

ou

ifconfig -a

Se como você diz que 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á funcionando ou não está conectado

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 localhost, ou endereços Docker, ou túneis VPN etc. e você sempre terá o endereço IP que é usado atualmente para conexões de Internet nesse exato momento (importante quando, por exemplo, 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 analisar a saída de ifconfig) mas também que você tem a tabela de roteamento configurada para usá-la corretamente.

Encontrei essa ideia em respostapor Collin Anderson.

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

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

e use como:

internalip

ou:

internalip TARGET

e você obterá seu endereço IP que seria usado para se conectar com o endereço IP de destino. O destino 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ê terá:

127.0.0.1

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

IP externo

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

Acho que vale a pena mencionar que executar ifconfig junto com-a opção exibirá todas as interfaces se ou não a interface tiver um IP.

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

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

# ifconfig | perl -nle'/dr:(\S+)/ && print $1'192.168.1.100127.0.0.1

Sua placa de rede é reconhecida pelo sistema, por isso está aparecendo eth0 e eth1

aqui está uma maneira rápida de atribuir IP à sua interface, use IP/sub-rede válidos 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,

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

dev=eth0ip addr show $dev | awk '/inet/ {print $2}' | 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.

No caso, o ifconfig o comando 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 as etapas abaixo:

Clique no botão ícone da rede na área de notificação e clique em Informações De Conexão.Network icon options

Isso abre uma janela que tem algumas informações, incluindo o endereço IP.IP address information

Há muitas boas respostas aqui para escolher, mas pensei em apontar facter o que geralmente é, mas não necessariamente usado com fantoche para coletar vários fatos sobre o sistema. A principal vantagem do facter é que ele oferece uma boa saída limpa, o que economiza toda a manipulação com grep, sed, awk, cut, perl, etc. Não vai dizer em qual interface você está interessado, mas se você souber disso, o seguinte fornece o IP Sem outro ponto crucial para limpar:

facter ipaddress_eth0 

comando ip

Aqui está uma variação sobre ip addr forma.

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

$ ip -4 -o addr show wlan73: 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 4ª coluna / palavra na saída. O resto, é exercício de Análise simples 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]" 

A mesma coisa, apenas 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 no meu ~/.bashrc portanto, 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ê está familiarizado com o uso de ferramentas de análise de rede, provavelmente sabe que, para obter seu endereço ip, tudo o que você precisa fazer é limpar o cache do navegador, iniciar o Wireshark capture na interface específica e procurar http GET pacotes sendo transmitidos. A coluna de destino mostrará seu endereço ip

Há muitas informações boas acima. Eu mantenho simples assim:

# what your computer thinks its ip address isfunction iplocal() {  ip route get 8.8.8.8 | awk '{print $NF; exit}'    # 8.8.8.8 is google dns}# what the outside world thinks your ip address isfunction ipexternal() {  curl --silent http://checkip.amazonaws.com        # or:  http://ipinfo.io/ip}function ipinfo() {  echo "local    IP  =>  $(iplocal)"  echo "external IP  =>  $(ipexternal)"}

Uso da amostra:

> ipinfolocal    IP  =>  192.168.1.139external IP  =>  76.88.85.95

“ifconfig | grep-G” 192.168.*.255 "/ cut-d '- f10 'pode obter o IP, ou simplesmente' hostname-I / cut-d '' - f1

@ AvatarParto aqueles são para interfaces voltadas para o acesso público, esta questão é sobre redes internas…

Por curiosidade, o que ` / etc / network / interfaces ’ tem nele?

Eu sei como usar o comando change directory, mas não sei como listar os arquivos uma vez lá, como eu faria isso?

‘ls’ listará arquivos em um diretório. ‘ls-l’ 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 ‘este é 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’.)