У меня есть система Alpine Linux, которая использует musl libc и поэтому не имеет /etc/nsswitch.conf
.
Согласно tcpdump в этой системе, net.LookupIP("localhost")
фактически выполняет запрос для localhost.a.b.c
, где a.b.c
берется из domain a.b.c
в /etc/resolv.conf
. Но если я добавлю /etc/nsswitch.conf
с hosts: files dns
, он будет корректно выглядеть localhost
с /etc/hosts
.
Насколько я могу судить, ни одна реализация libc не пытается добавить домен к localhost
при поиске в DNS. Итак (а) есть какая-то веская причина, по которой это сделано таким образом, или это ошибка? и (b) есть ли способ обойти это без добавления nsswitch.conf и при этом используя только имя localhost
?
Редактировать Подробнее:
ldd ./dnstest
/lib/ld-musl-armhf.so.1 (0x76f2c000)
libc.so => /lib/ld-musl-armhf.so.1 (0x76f2c000)
Так что да, есть зависимость от libc.so
. Я пробовал это с CGO_ENABLED=1
и с CGO_ENABLED=0
в командной строке сборки тоже.