A cosa serve l'indirizzo IP 127.0.0.2?


35

Sto eseguendo l'esempio in hiredis, che utilizza "127.0.0.2" come IP del server redis e funziona correttamente. In realtà, il server redis è in esecuzione sulla stessa macchina. So che "127.0.0.1" è l'indirizzo IP di "lo", ma che ne dici di "127.0.0.2"? È lo stesso di "127.0.0.1"?

Risposte:


37

Sì:

Gli standard di rete IPv4 riservano l'intero blocco indirizzo 127.0.0.0/8 per scopi di loopback. Ciò significa che qualsiasi pacchetto inviato a uno di questi 16.777.214 indirizzi (da 127.0.0.1 a 127.255.255.254) viene riavviato. IPv6 ha solo un singolo indirizzo, :: 1.

Diversi standard IETF (Internet Engineering Task Force) riservano il blocco indirizzo IPv4 127.0.0.0/8, in notazione CIDR e l'indirizzo IPv6 :: 1 a questo scopo. L'indirizzo IPv4 più comune utilizzato è 127.0.0.1. Comunemente questi indirizzi di loopback sono associati ai nomi host, localhost o loopback.

o dalla stessa RFC:

127.0.0.0/8 - Questo blocco è assegnato per l'uso come host Internet      indirizzo di loopback. Un datagramma inviato da un protocollo di livello superiore a un      l'indirizzo dovunque all'interno di questo blocco dovrebbe tornare all'interno dell'host.      Questo è normalmente implementato usando solo 127.0.0.1/32 per loopback,      ma nessun indirizzo all'interno di questo blocco dovrebbe mai apparire su qualsiasi rete      ovunque [RFC1700, pagina 5].

Per divertimento, prova a pingare:

$ ping 127.127.127.127
PING 127.127.127.127 (127.127.127.127) 56(84) bytes of data.
64 bytes from 127.127.127.127: icmp_req=1 ttl=64 time=0.110 ms
64 bytes from 127.127.127.127: icmp_req=2 ttl=64 time=0.065 ms
^C
--- 127.127.127.127 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.065/0.087/0.110/0.024 ms

La pagina di Wikipedia è cambiata e ora dice "anche se qualsiasi indirizzo nell'intervallo da 127.0.0.1 a 127.255.255.254 è mappato ad esso", restituendo l'essenza di questa risposta in conflitto diretto con Wikipedia.
SilverSkin

6
@ SilverSkin Ti dispiacerebbe spiegare cosa intendi? L'unica differenza tra ciò che è in risposta e ciò che è in Wikipedia ora è che hanno (correttamente) escluso 127.0.0.0 e 127.255.255.255, che sono indirizzi di rete / broadcast. Il gist è sempre lo stesso - 127.x.x.x == 127.0.0.1 (eccetto 127.0.0.0 e 127.255.255.255, che è previsto su qualsiasi rete / 8).
icyrock.com

Quindi non c'è differenza tra il collegamento a 127.0.0.1 rispetto al collegamento a 127.0.0.124? Quindi perché gli hiredis si preoccupano di 127.0.0.2, se è lo stesso indirizzo? Inoltre cosa succede se hai inviato un messaggio a 127.0.0.0?
CMCDragonkai

7
È necessario menzionare che non è lo stesso in OS X, che solo 127.0.0.1 esegue il loopback. Vedere Qui .
Wenbing Li

6
@CMCDragonkai 127.0.0.1 e 127.0.0.124 potrebbero trovarsi sulla stessa interfaccia ma non sono lo stesso indirizzo. Si potrebbe usare un ip insolito come 127.0.0.2 se si vuole usare impostare un servizio su una porta comune e non interferire con altri servizi che potrebbero essere in ascolto su quella stessa porta su 127.0.0.1
Keith Reynolds

4

È 127.0.0.2 lo stesso di 127.0.0.1? Risposta = NO

Mentre 127.0.0.1 a 127.255.255.254 sono tutti gli indirizzi locali legati all'interfaccia lo. Non sono la stessa cosa. È possibile utilizzare ciascun indirizzo per associare un servizio diverso alla stessa porta. E.g 16 milioni di server Web sulla porta 80, accessibili solo dal computer locale (se non si esaurisce la memoria o prima altra risorsa)

Ho appena creato un servizio docker per collegarlo 127.0.0.2:80, Ho quindi aggiunto un alias /etc/hosts ora posso collegarmi ad esso tramite http://myserver, ma non via http://127.0.0.1 o http://localhost. Tuttavia è disponibile solo da questa macchina. Come è, solo, sul lo interfaccia.

Quindi ho creato un altro servizio docker per il collegamento 127.0.0.3:80e un servizio Python su localhost:80 e un altro su 127.0.0.4:80


Questo potrebbe non funzionare su tutti i sistemi operativi. Sto usando Debian (9) Gnu / Linux, kernel Linux 4.9.0-3-amd64



Mi ci sono volute circa un'ora di ricerche ma sono riuscito a capire finalmente cosa stavi tentando di trasmettere. Ho aggiornato la citazione dall'articolo di Wikipedia nella risposta accettata. Dal momento che la dichiarazione citata è cambiata nel corso degli anni, ho citato una dichiarazione diversa, per ripristinare quell'informazione originale contenuta nella risposta.
Ramhound

0

Non una risposta generale completa (ce n'è già una). Questa mia risposta mostra un esempio dove 127.0.0.2 è stato usato per risolvere il problema.

Estratto:

L'OP ha tentato di testare alcuni software in un caso in cui la sua connessione a un server è stata rifiutata. Questo è stato fatto sul server da un temporaneo iptables regola che rifiuta tutto il traffico dall'IP del client. Il client è stato immediatamente in grado di "vedere" la connessione è stata respinta.

Il problema si presentava quando questa persona spostava il software server sulla stessa macchina del client e tentava di usare l'interfaccia di loopback. La regola era impostata per bloccare la comunicazione da 127.0.0.1 ma le informazioni che una connessione è stata rifiutata hanno subito la stessa regola e non sono mai arrivate al software client che è stato impiccato (presumibilmente fino al timeout).

La soluzione era da usare 127.0.0.2 come indirizzo del server e impostare una regola che rifiuta le connessioni a esso. Le informazioni su un rifiuto sono andate a 127.0.0.1 ed è stato in grado di passare al software client.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.