Bagaimana Anda mendapatkan alamat loopback selain 127.0.0.1 untuk bekerja pada OS X


55

Menurut semua yang saya baca, seluruh subnet 127.xxx harus loopback.

Namun, di Mac saya, saya hanya bisa melakukan ping 127.0.0.1

Saya tahu saya pernah melakukan ini sebelumnya (walaupun mungkin pada OS lain) dan telah sangat berguna untuk mengembangkan beberapa situs SSL secara lokal dan untuk tunneling layanan jarak jauh untuk akses pada IP lokal (misalnya saya bisa ssh ke server MySQL saya, dan cukup port forward port standar ke port yang sama pada mesin lokal saya tetapi pada 127.0.0.2 sementara server lokal saya berlari di 127.0.0.1.

Jawaban:


73

Inilah jawaban singkatnya: sudo ifconfig lo0 alias 127.0.0.* up

Setiap alias harus ditambahkan secara individual ( sudo ifconfig lo0 alias 127.0.0.2 up, sudo ifconfig lo0 alias 127.0.0.3 up). Hal ini dapat dilakukan secara manual untuk pengujian, atau subset atau daftar lengkap dari 250 nomor lain yang tersedia di subnet itu dapat dibuat menjadi skrip StartupItems yang akan melakukannya secara otomatis pada saat boot.

Jawaban panjang: Menurut RFC3330, 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 diulang kembali di dalam host. Ini biasanya diimplementasikan hanya 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.


4
Kalau saja ada cara untuk membuatnya bekerja untuk 127. *. *. *
Matthew Schinckel

Jika ini ternyata juga bekerja pada CentOS, Anda mendapatkan hadiah dari saya.
Parthian Shot

Sebenarnya, apa pun cara Anda mendapatkan hadiah. Karena tidak bekerja untuk CentOS, saya hanya akan bertanya dan menjawab pertanyaan itu setelah saya menemukan jawabannya.
Parthian Shot

Bagaimana saya mengatur 4 server pada port 8, menggunakan alamat loopback berbeda pada debian9 Gnu / Linux superuser.com/a/1255308/62123
ctrl-alt-delor

12

Bagi yang berminat, berikut adalah skrip bash kecil yang menambahkan semua alias untuk IP 127.0.0. *:

#!/bin/bash
for ((i=2;i<256;i++))
do
    sudo ifconfig lo0 alias 127.0.0.$i up
done

Apakah saya salah membaca ini? Apa yang Anda buat tampak seperti itu tidak semua alamat dari 127.0.0.1 ke 127.0.0.255. Jika Anda mengubah "sudo ifconfig lo0 alias 127.0.0. $ I up" menjadi "sudo ifconfig lo0 alias 127. $ i. $ I. $ I up" yang akan membuat Anda mendapatkan sebagian besar dari mereka, bukan? Namun Anda akan melewatkan apa pun yang kurang dari 2 .. Jadi mungkin gunakan variabel yang berbeda untuk dua oktet lainnya? Alamat IP tertinggi untuk loopback adalah 127.255.255.255
Everett

1
@Everett, Anda membacanya dengan benar, hanya alamat 127.0.0. *. Alasan saya tidak membahas seluruh jajaran adalah karena sebenarnya cukup lambat untuk memproses bahkan 255 alamat, jadi 255x255x255 akan memakan waktu terlalu lama.
laurent

1
Terima kasih. Saya hanya ingin memastikan bahwa harapan itu ditetapkan, karena seseorang akan datang ke sini dan berkata, "Hei, itu tidak berhasil untuk 127.7.53.91." Saya tidak akan melakukan itu, tetapi seseorang akan ...
Everett

2
Sebenarnya, proposal Everett @ tidak akan berhasil, karena hanya akan mengaktifkan alamat seperti 127.7.7.7 atau 127.42.42.42, itu semua yang memiliki tiga digit terakhir adalah sama. Anda memerlukan tiga loop berbeda untuk mengaktifkan semua IP di blok 127/8. Namun melakukan ini tentu bukan ide yang baik: sangat mungkin, mengingat setiap IP harus diaktifkan secara terpisah, bahwa ada beberapa sumber daya yang melekat pada masing-masing IP yang ditugaskan; mengalokasikan sekitar 17,7 juta IP (yaitu 256 ^ 3) mungkin ternyata memiliki beberapa konsekuensi signifikan ...
jwatkins

2
@jwatkins Intinya: Aktifkan mereka hanya jika Anda membutuhkannya, yang merupakan aturan praktis untuk semuanya, sungguh.
William T Froggard
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.