Como o ifconfig encontra o endereço IP externo de uma máquina?

0

Normalmente, quando eu quero verificar o endereço IP externo de uma determinada máquina, eu simplesmente curl algum site externo me envia uma resposta dizendo-me qual é o endereço IP dele. No entanto, notei que ifconfig tem meu endereço IP externo listado também.

Será que ifconfig tem algum tipo de fonte "canônica" na web que envia solicitações para determinar o endereço IP de uma máquina ou tem algum outro método de descobrir o endereço IP de uma máquina?

    
por badcook 21.11.2013 / 00:48

3 respostas

3

Configurar o endereço externo é o trabalho de ifconfig . Ele apenas lê as estruturas de dados do kernel nas quais ele escreveu o endereço. Funciona mesmo que o seu computador esteja desconectado da rede. ifconfig pode configurar totalmente a rede enquanto o computador está isolado da rede e, se a configuração foi feita corretamente, a rede estará funcionando assim que o cabo de rede estiver conectado.

O endereço de loopback [127.0.0.1] está configurado em um dispositivo de software que existe mesmo se não houver placas de rede instaladas no computador. Isso permite conexões locais usando protocolos como TCP e UDP. Isso simplifica o desenvolvimento de software, pois não é necessário fornecer serviços especiais para conexões locais.

EDIT: ifconfig normalmente não saberá se você configurou um endereço IP que já está em uso. Se a interface de rede estiver conectada à Internet, será possível ARP da rede verificar se o endereço está em uso. Este não é um recurso obrigatório de ifconfig e vários computadores com o mesmo endereço IP não são uma ocorrência incomum. Se ifconfig ou outro software determinar que o endereço configurado está incorreto, a resposta usual é emitir uma mensagem de aviso.

Também é possível para ifconfig configurar o dispositivo para a rede errada. É responsabilidade do usuário garantir que a configuração fornecida para ifconfig esteja correta. Existem outras ferramentas que executam as mesmas funções que ifconfig e as mesmas restrições se aplicam.

Existem três intervalos de endereços IP definidos para redes privadas. Eles são 10.0.0.0/8, 172.16.0.0/12 e 192.168.0.0/16. É comum configurar computadores nesses intervalos de endereços. Nesses casos, o endereço IP deles será diferente do endereço IP "Público" na Internet. O endereço IP "Público" pertencerá a um dispositivo conectado à Internet que realiza a conversão de endereços de rede (NAT) para permitir que computadores na rede privada se comuniquem com a Internet. Computadores em uma rede doméstica quase sempre têm um endereço de rede privada. A maioria dos roteadores domésticos executará NAT para computadores na rede local (privada).

    
por 21.11.2013 / 00:59
3

ifconfig é simplesmente uma ferramenta para definir / obter a composição atual de suas interfaces de rede. Quando você o executa, ele simplesmente retorna essas informações para você. Você pode usá-lo para consultar todos os dispositivos ou uma interface individual.

Exemplos

Dispositivo individual.

$ ifconfig lo
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:16436  Metric:1
          RX packets:6119 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6119 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:8725156 (8.3 MiB)  TX bytes:8725156 (8.3 MiB)

Todos os dispositivos.

$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          UP 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)
          Interrupt:20 Memory:f2600000-f2620000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:45792 errors:0 dropped:0 overruns:0 frame:0
          TX packets:45792 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:7548353 (7.1 MiB)  TX bytes:7548353 (7.1 MiB)

wlan0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:192.168.1.20  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1254848 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1408361 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:699671476 (667.2 MiB)  TX bytes:347243164 (331.1 MiB)

/ proc / net

As informações que você pode manipular com ifconfig sobre cada interface de rede são expostas no kernel Linux sob o sistema de arquivos /proc/net . Se você consultar a man page de ifconfig , você verá esta seção:

FILES
       /proc/net/socket
       /proc/net/dev
       /proc/net/if_inet6

Estes são os arquivos que contêm algumas das informações de rede. Existem outros arquivos em /proc/net também.

Alternativas para ifconfig, ip

Existe uma ferramenta alternativa chamada ip que você pode usar para manipular as informações de rede também.

$ ip addr show lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever

Informações de rede

As informações, como o endereço IP, são configuradas estaticamente ou dinamicamente. Quando definido estaticamente, normalmente você pode usar a ferramenta ifconfig para definir o endereço IP de um dispositivo de rede específico, como eth0 ou wlan0 .

A alternativa, em que as informações de IP são configuradas dinamicamente, usa um serviço chamado DHCP, que é um servidor na rede ao qual os computadores podem se conectar, solicitando ao servidor DHCP a atribuição de um endereço IP.

Em ambos os casos, as informações de rede, quando determinadas, estão acessíveis em /proc/net/* .

    
por 21.11.2013 / 05:49
0

O ifconfig não pode mostrar seu endereço IP "externo" se você estiver por trás de um NAT. Ele configura apenas o endereço fornecido pelo servidor DHCP para suas interfaces de rede. Se você tem e para saber seu endereço IP externo, você deve acessar um serviço como o link .

    
por 11.01.2015 / 15:39

Tags