Seperti kita ketahui alamat IPv4 untuk localhost
is 127.0.0.1
(alamat loopback). Untuk apa alamat IPv6 localhost
dan untuk 0.0.0.0
apa saya perlu memblokir beberapa host iklan.
Seperti kita ketahui bahwa alamat IPv4 untuk
localhost
adalah127.0.0.1
(alamat loopback).
Sebenarnya, semua alamat IPv4 di 127.0.0.0/8
adalah alamat loopback.
Di IPv6, analog langsung dari rentang loopback adalah ::1/128
. Jadi ::1
(bentuk panjang 0:0:0:0:0:0:0:1
) adalah satu-satunya alamat loopback IPv6.
Sementara nama host localhost
biasanya akan menyelesaikan ke 127.0.0.1
atau ::1
, saya telah melihat kasus di mana seseorang telah mengikatnya ke alamat IP yang bukan alamat loopback. Ini agak gila ... tapi terkadang orang melakukannya.
Saya mengatakan "ini gila" karena Anda bertanggung jawab untuk merusak asumsi aplikasi dengan melakukan ini; misalnya, aplikasi mungkin mencoba melakukan pencarian terbalik pada IP loopback dan tidak mendapatkan hasil yang diharapkan. Dalam kasus terburuk, aplikasi mungkin akhirnya mengirimkan lalu lintas sensitif melalui jaringan yang tidak aman secara tidak sengaja ... meskipun Anda mungkin perlu membuat kesalahan lain juga untuk "mencapai" itu.
Memblokir 0.0.0.0
tidak masuk akal. Di IPv4 itu tidak pernah dirutekan. Setara di IPv6 adalah ::
alamat (bentuk panjang 0:0:0:0:0:0:0:0
) ... yang juga tidak pernah dirutekan.
The 0.0.0.0
dan ::
alamat dicadangkan berarti "alamat". Jadi, misalnya program yang menyediakan layanan web dapat mengikat ke 0.0.0.0
port 80 untuk menerima koneksi HTTP melalui salah satu alamat IPv4 host. Alamat ini tidak valid sebagai alamat sumber atau tujuan untuk paket IP.
Akhirnya, beberapa komentar menanyakan tentang ::/128
versus ::/0
versus ::
.
Apa perbedaan ini?
Sebenarnya, dua yang pertama adalah notasi CIDR bukan alamat IPv6. Mereka sebenarnya menentukan rentang alamat IP. CIDR terdiri dari alamat IP dan nomor tambahan yang menentukan jumlah bit dalam netmask. Keduanya bersama-sama menentukan kisaran alamat; yaitu kumpulan alamat yang dibentuk dengan mengabaikan bit-bit yang ditutup dari alamat yang diberikan.
Begitu:
::
berarti hanya alamat IPv6 0:0:0:0:0:0:0:0
::/128
artinya 0:0:0:0:0:0:0:0
dengan netmask yang terdiri dari 128 bit. Ini memberikan jangkauan jaringan dengan tepat satu alamat di dalamnya.::/0
artinya 0:0:0:0:0:0:0:0
dengan netmask yang terdiri dari 0 bit. Ini memberikan jangkauan jaringan dengan 2 128 alamat di dalamnya .; yaitu seluruh ruang alamat IPv6!Untuk informasi lebih lanjut, baca halaman Wikipedia tentang alamat IPv4 & IPv6, dan notasi CIDR:
::1
adalah loopback alamat di IPv6.
Di dalam URL, gunakan tanda kurung siku []
:
http://[::1]/
http://[::1]:80/
Melampirkan literal IPv6 dalam tanda kurung siku untuk digunakan di URL didefinisikan dalam RFC 2732 - Format untuk Alamat IPv6 Literal di URL .
IPv6 localhost adalah ::1
. Alamat yang tidak ditentukan adalah ::
. Ini didefinisikan dalam RFC 4291 bagian 2.5 .
Hanya demi kelengkapan: ada alamat IPv6 yang dipetakan IPv4 , tempat Anda dapat menyematkan alamat IPv4 di alamat IPv6 (mungkin tidak didukung oleh setiap peralatan IPv6).
Contoh: Saya menjalankan server di komputer saya, yang dapat diakses melalui http://127.0.0.1:19983/solr
. Jika saya mengaksesnya melalui alamat IPv6 yang dipetakan IPv4, maka saya mengaksesnya melalui http://[::ffff:127.0.0.1]:19983/solr
(yang akan diubah menjadi http://[::ffff:7f00:1]:19983/solr
)
Untuk digunakan di a /etc/hosts
file sebagai teknik pemblokiran iklan sederhana yang menyebabkan domain gagal diselesaikan, alamat 0.0.0.0 telah banyak digunakan karena menyebabkan permintaan langsung gagal bahkan tanpa mencoba, karena ini bukan alamat yang valid atau dapat dirutekan. Ini dibandingkan dengan menggunakan 127.0.0.1 di tempat itu, di mana setidaknya akan memeriksa untuk melihat apakah komputer Anda mendengarkan pada port yang diminta 80 sebelum gagal dengan 'koneksi ditolak.' Salah satu dari alamat tersebut yang digunakan di file host untuk domain tersebut akan menghentikan permintaan apa pun untuk dicoba melalui jaringan yang sebenarnya, tetapi 0.0.0.0 telah disukai karena lebih 'optimal' untuk alasan di atas. "127" IP akan mencoba untuk mengakses komputer Anda sendiri, dan IP lain akan menyebabkan permintaan dikirim ke router untuk mencoba merutekannya, tetapi untuk 0.0.0.0 di sana '
Semua yang dikatakan, memiliki IP apa pun yang terdaftar di file host Anda untuk domain yang akan diblokir sudah cukup, dan Anda tidak perlu atau ingin juga meletakkan alamat ipv6 di file host Anda kecuali - mungkin - Anda tidak melakukannya telah mengaktifkan ipv4 sama sekali. Saya akan sangat terkejut jika itu masalahnya. Dan tetap saja, saya pikir memiliki host yang muncul di / etc / hosts dengan alamat ipv4 yang buruk ketika Anda tidak mengaktifkan ipv4 akan tetap memberi Anda hasil yang Anda cari yang gagal, daripada mencari DNS nyata misalnya, adserver-example.com dan mendapatkan kembali IP v4 atau v6.