Untuk apa 127.0.0.2 alamat IP?

39

Saya menjalankan contoh di hiredis, yang menggunakan "127.0.0.2" sebagai IP server redis, dan itu berjalan dengan benar. Sebenarnya, server redis berjalan di mesin yang sama. Saya tahu bahwa "127.0.0.1" adalah alamat IP "lo", tetapi bagaimana dengan "127.0.0.2"? Apakah sama dengan "127.0.0.1"?


sumber

Jawaban:

37

Iya nih:

Standar jaringan IPv4 mencadangkan seluruh blok alamat 127.0.0.0/8 untuk tujuan loopback. Itu berarti setiap paket yang dikirim ke salah satu dari 16.777.214 alamat (127.0.0.1 hingga 127.255.255.254) diulang kembali. IPv6 hanya memiliki satu alamat, :: 1.

Berbagai standar Internet Engineering Task Force (IETF) mencadangkan blok alamat IPv4 127.0.0.0/8, dalam notasi CIDR dan alamat IPv6 :: 1 untuk tujuan ini. Alamat IPv4 yang paling umum digunakan adalah 127.0.0.1. Biasanya alamat loopback ini dipetakan ke nama host, localhost atau loopback.

atau dari RFC sendiri:

127.0.0.0/8 - Blok ini ditugaskan untuk digunakan sebagai alamat loopback host Internet. Datagram yang dikirim oleh protokol tingkat yang lebih tinggi ke alamat di mana saja di dalam blok ini harus kembali ke dalam host. Ini biasanya diimplementasikan hanya dengan menggunakan 127.0.0.1/32 untuk loopback, tetapi tidak ada alamat dalam blok ini yang akan pernah muncul di jaringan mana pun di mana pun [RFC1700, halaman 5].

Untuk bersenang-senang, coba dengan melakukan ping:

$ 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
icyrock.com
sumber
Halaman Wikipedia telah berubah, dan sekarang mengatakan "meskipun alamat di kisaran 127.0.0.1 hingga 127.255.255.254 dipetakan padanya", menjadikan inti dari jawaban ini bertentangan langsung dengan Wikipedia.
SilverSkin
6
@ Silververkin Bisakah Anda menjelaskan apa yang Anda maksud? Satu-satunya perbedaan antara apa yang ada dalam jawaban dan apa yang ada di Wikipedia sekarang adalah bahwa mereka (dengan benar) mengecualikan 127.0.0.0 dan 127.255.255.255, yang merupakan alamat jaringan / siaran. Intinya masih sama - 127.xxx == 127.0.0.1 (kecuali untuk 127.0.0.0 dan 127.255.255.255, yang diharapkan pada setiap jaringan / 8).
icyrock.com
1
Jadi tidak ada perbedaan antara mengikat ke 127.0.0.1 versus mengikat ke 127.0.0.124? Jadi mengapa hired repot dengan 127.0.0.2, jika alamatnya sama? Apa yang terjadi jika Anda mengirim pesan ke 127.0.0.0?
CMCDragonkai
7
Perlu disebutkan bahwa itu tidak sama di OS X, yang hanya 127.0.0.1 rute ke loopback. Lihat di sini .
Wenbing Li
6
@CMCDragonkai 127.0.0.1 dan 127.0.0.124 mungkin berada pada antarmuka yang sama tetapi mereka bukan alamat yang sama. Seseorang mungkin menggunakan ip yang tidak biasa seperti 127.0.0.2 jika seseorang ingin menggunakan pengaturan layanan pada port umum dan tidak mengganggu layanan lain yang mungkin mendengarkan port yang sama pada 127.0.0.1
Keith Reynolds
6
  • "Apakah semua 127.x.x.xalamat dibatasi untuk mesin lokal?" Ya
  • "Apakah semua 127.x.x.xalamat terikat ke loantarmuka" Ya
  • "Apakah 127.x.x.xalamat dialihkan melalui jaringan?" Tidak

127.0.0.0/8 - Blok ini ditugaskan untuk digunakan sebagai alamat loopback host Internet. Datagram yang dikirim oleh protokol tingkat yang lebih tinggi ke
alamat di mana saja di dalam blok ini akan kembali ke dalam host. Ini
biasanya diimplementasikan hanya menggunakan 127.0.0.1/32 untuk loopback. Seperti
dijelaskan dalam [RFC1122], Bagian 3.2.1.3, alamat dalam seluruh blok 127.0.0.0/8 tidak muncul secara sah di jaringan mana pun. - RFC5735

  • "Apakah 127.0.0.2sama dengan 127.0.0.1?" TIDAK

Sedangkan 127.0.0.1untuk 127.255.255.254semua alamat lokal terikat ke antarmuka lo. Mereka tidak sama. Anda dapat menggunakan setiap alamat untuk mengikat layanan yang berbeda ke port yang sama. Misalnya 16 Juta server web pada port 80, hanya dapat diakses dari mesin lokal (Jika Anda tidak kehabisan memori, atau sumber daya lainnya terlebih dahulu)

Saya baru saja menyiapkan layanan buruh pelabuhan untuk mengikat 127.0.0.2:80. Saya kemudian menambahkan alias ke /etc/hosts. Sekarang saya dapat terhubung melalui http://myserver, tetapi tidak melalui http://127.0.0.1atau http://localhost. Namun itu hanya tersedia untuk mesin ini. Seperti itu, hanya, pada loantarmuka.

Saya kemudian mengatur layanan buruh pelabuhan lain untuk mengikat 127.0.0.3:80, dan layanan python aktif localhost:80dan aktif lagi 127.0.0.4:80.


Ini mungkin tidak berfungsi pada semua sistem operasi. Saya menggunakan Debian (9) Gnu / Linux, kernel Linux 4.9.0-3-amd64. Beberapa OS mungkin memperlakukan semua alamat 127.0.0.1127.255.255.254sama. Beberapa hanya dapat bekerja dengan 127.0.0.1.

Lihat juga

ctrl-alt-delor
sumber
Mari kita lanjutkan diskusi ini dalam obrolan .
ctrl-alt-delor
Butuh penelitian sekitar satu jam, tetapi akhirnya saya bisa mengerti apa yang ingin Anda sampaikan. Saya telah memperbarui kutipan dari artikel Wikipedia dalam jawaban yang diterima. Karena pernyataan yang dikutip telah berubah selama bertahun-tahun, saya mengutip pernyataan yang berbeda, untuk mengembalikan informasi asli yang berisi jawabannya.
Ramhound
1

Bukan jawaban umum yang komprehensif (sudah ada satu). Jawaban saya ini menunjukkan contoh di mana 127.0.0.2digunakan untuk menyelesaikan masalah.

Ekstrak:

OP di sana berusaha untuk menguji beberapa perangkat lunak dalam kasus ketika koneksi ke server ditolak. Ini dilakukan di server dengan iptablesaturan sementara yang menolak semua lalu lintas dari IP klien. Klien segera dapat "melihat" koneksi ditolak.

Masalahnya muncul ketika orang ini memindahkan perangkat lunak server ke mesin yang sama dengan klien dan mencoba menggunakan antarmuka loopback. Aturan ditetapkan untuk memblokir komunikasi dari 127.0.0.1tetapi informasi koneksi ditolak menjalani aturan yang sama dan tidak pernah sampai ke perangkat lunak klien yang digantung (mungkin sampai batas waktu).

Solusinya adalah menggunakan 127.0.0.2sebagai alamat server dan menetapkan aturan yang menolak koneksi ke sana. Informasi tentang penolakan masuk 127.0.0.1dan dapat diteruskan ke perangkat lunak klien.

Kamil Maciorowski
sumber