getent hosts mencetak IPv6, getent ahosts mencetak IPv4

9

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 .

l0b0
sumber
Judul itu salah (kebalikan dari output)
whoan

Jawaban:

8

Keduanya getent hostsdan getent ahostsberpotensi mencetak alamat IPv4 dan IPv6, tetapi mereka memutuskan alamat mana yang akan dicetak secara berbeda (itulah gunanya memiliki dua perintah yang berbeda).

hostspanggilan gethostbyname2(varian yang mendukung IPv6 gethostbyname). Perilaku ini hard-coded : mencari alamat IPv6, dan jika tidak ada, cari alamat IPv4.

ahostspanggilan getaddrinfo. 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 ahostsdan gai.confsekitar Stack Exchange:

Gilles 'SANGAT berhenti menjadi jahat'
sumber