Bug 47768

Summary: getent hosts не отображает адрес в формате IPv6 без передачи имени хоста
Product: Sisyphus Reporter: Alexander Makeenkov <amakeenk>
Component: glibc-utilsAssignee: Gleb F-Malinovskiy <glebfm>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: arseny, glebfm, ldv, placeholder
Version: unstable   
Hardware: x86_64   
OS: Linux   
Bug Depends on:    
Bug Blocks: 23202    

Description Alexander Makeenkov 2023-09-28 11:51:14 MSK
Версия пакета:
glibc-utils-2.38.0.23.0e1ef6779a-alt1.x86_64 (сизиф)
glibc-2.32-alt5.x86_64 (p10)

Шаги воспроизведения:

1. В /etc/hosts добавлены записи:

# cat /etc/hosts
127.0.0.1       localhost.localdomain localhost
::1             localhost6.localdomain localhost6

2. Выполнить команду:

# getent hosts

Ожидаемый результат.

IPv6 адрес отображается в формате IPv6:
127.0.0.1       localhost.localdomain localhost
::1             localhost6.localdomain localhost6

Получаемый результат.

IPv6 адрес отображается в формате IPv4:
127.0.0.1       localhost.localdomain localhost
127.0.0.1       localhost6.localdomain localhost6

Аналогичное поведение для ahosts и ahostsv6:

# getent ahostsv6
127.0.0.1       localhost.localdomain localhost
127.0.0.1       localhost6.localdomain localhost6

При этом, если третьим аргументом передать имя, то адрес отображается в ожидаемом формате:

# getent hosts localhost6
::1             localhost6.localdomain localhost6

Нашёл такой очень старый баг https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=113543, там пишут, что должно помочь RES_OPTIONS=inet6, но не помогает:
# RES_OPTIONS=inet6 getent hosts
127.0.0.1       localhost.localdomain localhost
127.0.0.1       localhost6.localdomain localhost6

Возможно потому что, как написано тут https://man.archlinux.org/man/resolv.conf.5.ru#inet6, inet6 уже устарело.