Я вставил
domain test
в resolv.conf, а затем ожидали, что
# getent ahosts srv
# getent ahosts srv.test
1.1.1.1 STREAM srv.test
1.1.1.1 DGRAM
1.1.1.1 RAW
оба дадут одинаковые результаты.
Есть идеи, почему этого не происходит?
Спасибо!
Редактировать:
/ etc / nsswitch
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
Запись srv.test хранится в / etc / hosts.
Команда getent
делает системный вызов getaddrinfo()
и будет пробовать каждую службу, определенную в /etc/nsswitch.conf
Однако само разрешение DNS - это вызов более низкого уровня gethostbyname()
и настраивается /etc/resolv.conf
.
Короче говоря, вы не можете определить полное имя хоста только в /etc/hosts
так как getaddrinfo()
не использует поисковые домены для поиска файлов хостов. Вы можете создать псевдоним хоста в /etc/hosts
путем определения srv как;
1.1.1.1 srv.test srv