Output verbal dari terminal saya:
$ getent hosts example.org
2001:500:88:200::10 example.org
$ getent ahosts example.org
192.0.43.10 STREAM 43-10.any.icann.org
192.0.43.10 DGRAM
192.0.43.10 RAW
Saya pikir mereka berdua (setidaknya ahosts ) seharusnya mencetak alamat IPv4 dan IPv6. Mengapa ini mencetak berbagai jenis alamat?
$ uname -srvmpio
Linux 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:17:36 UTC 2012 i686 i686 i386 GNU/Linux
Sunting : Sepertinya ini terkait dengan laporan bug ini .
Jawaban:
Keduanya
getent hosts
dangetent ahosts
berpotensi mencetak alamat IPv4 dan IPv6, tetapi mereka memutuskan alamat mana yang akan dicetak secara berbeda (itulah gunanya memiliki dua perintah yang berbeda).hosts
panggilangethostbyname2
(varian yang mendukung IPv6gethostbyname
). Perilaku ini hard-coded : mencari alamat IPv6, dan jika tidak ada, cari alamat IPv4.ahosts
panggilangetaddrinfo
. Fungsi ini menghitung semua protokol untuk nama yang diberikan, sehingga dapat mengembalikan alamat IPv4 dan IPv6 dalam panggilan yang sama. Apa yang dikembalikan ditentukan oleh pengaturan di/etc/gai.conf
. Karena banyak aplikasi masih berjuang untuk mengatasi IPv6, sebagian besar distribusi lebih suka IPv4 secara default dan hanya menggunakan IPv6 berdasarkan permintaan eksplisit.Beberapa bacaan bermanfaat di
ahosts
dangai.conf
sekitar Stack Exchange:sumber