getent хости друкує IPv6, getent ahosts друкує IPv4


9

Дослівний вихід з мого терміналу:

$ 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    

Я подумав, що вони обидва (принаймні привидів ) повинні друкувати адреси IPv4 та IPv6. Чому ці типи друку різні типи адрес?

$ uname -srvmpio
Linux 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:17:36 UTC 2012 i686 i686 i386 GNU/Linux

Редагувати : Схоже, це може бути пов’язано з цим звітом про помилку .


Заголовок неправильний (протилежний висновку)
whoan

Відповіді:


8

І вони, getent hostsі getent ahostsпотенційно можуть надрукувати як IPv4, так і IPv6 адреси, але вони вирішують, яку адресу (ів) друкувати по-різному (у цьому сенс двох різних команд).

hostsдзвінки gethostbyname2(підтримуючий варіант IPv6 gethostbyname). Поведінка жорстко закодована : шукайте IPv6-адресу, а якщо такої немає, шукайте IPv4-адресу.

ahostsдзвінки getaddrinfo. Ця функція перераховує всі протоколи для даного імені, тому вона може повертати і IPv4, і IPv6 адреси в одному дзвінку. Що він повертає, визначається налаштуваннями в /etc/gai.conf. Оскільки багато додатків все ще намагаються впоратися з IPv6, більшість дистрибутивів віддають перевагу IPv4 за замовчуванням і використовують лише IPv6 за допомогою явного запиту.

Деякі корисні читання на ahostsта gai.confнавколо Stack Exchange:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.