Interface de loopback no Linux captura todo o tráfego de loopback

4

Em uma máquina linux com uma interface de loopback normal:

$ 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:36621784 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36621784 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:6752024976 (6.2 GiB)  TX bytes:6752024976 (6.2 GiB)

quando faço ping em qualquer endereço de adição no intervalo 127.0.0.0/8, recebo uma resposta:

$ ping -c1 127.7.23.4
PING 127.7.23.4 (127.7.23.4) 56(84) bytes of data.
64 bytes from 127.7.23.4: icmp_seq=1 ttl=64 time=0.045 ms

--- 127.7.23.4 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.045/0.045/0.045/0.000 ms

Esse comportamento é especial para o Linux, já que não o vejo na minha máquina Mac OS X Lion. Eu não tenho nenhuma configuração de aliases de IP para a interface de loopback, que é o que eu esperava que todo o trabalho tivesse.

Por que isso está acontecendo e é o comportamento esperado?

    
por Matthew Buckett 15.02.2012 / 10:19

3 respostas

6

O Windows também tem esse comportamento. Eu acho que isso é interpretações diferentes de rfc 3330

127.0.0.0/8 - This block is assigned for use as the Internet host loopback address. A datagram sent by a higher level protocol to an address anywhere within this block should loop back inside the host. This is ordinarily implemented using only 127.0.0.1/32 for loopback, but no addresses within this block should ever appear on any network anywhere [RFC1700, page 5].

Parece que o Linux interpreta isso como significando que qualquer (até mesmo um endereço não configurado) no intervalo 127.0.0.0/8 deve ser retornado em loop e então você obtém uma resposta do ping.

    
por 15.02.2012 / 10:42
5

O comportamento está documentado em RFC 1700 . 127.7.23.4 também é um endereço de loopback e também atribuído à máquina local. (O que mais seria atribuído a?)

IP-address ::= { <Network-number>, <Host-number> }
...
{127, <any>}
Internal host loopback address. Should never appear outside a host.

Não há necessidade de fazer todos os endereços neste intervalo funcionarem, mas é particularmente útil quando se lida com protocolos que não permitem especificar uma porta, mas apenas um endereço IP. Ter vários endereços IP locais permite que você execute várias instâncias desses servidores para uso local.

    
por 15.02.2012 / 10:40
1

Isto é de fato específico para o Linux (e talvez outro SO).

Mas quando você lê a definição de máscara de rede RFC 1700 ou lo , a rede de loopback deve ser considerada uma Uma aula.

Para sua informação:

Então, desta vez parece que o Windows estava certo (até 2002);)

    
por 15.02.2012 / 10:46