Допустим, в /etc/resolv.conf есть следующее ..
nameserver 10.10.10.10
search x.com y.com
Для разрешения «ping foo» я вижу, что преобразователь сначала пробует полное доменное имя с настроенными доменами поиска (например: foo.x.com, foo.y.com), а затем пытается использовать значение по умолчанию «foo».
Согласовано ли это поведение на всех платформах * nix? Или некоторые реализации могут сначала выполнить разрешение коротких имен в корневом домене (например, "foo.")?
из man-страницы resolv.conf:
options ndots:n
Sets a threshold for the number of dots which must
appear in a name given to res_query(3) (see
resolver(3)) before an initial absolute query will be
made. The default for n is 1, meaning that if there
are any dots in a name, the name will be tried first as
an absolute name before any search list elements are
appended to it. The value for this option is silently
capped to 15.
Таким образом, если resolv.conf имеет options ndots:0
он немедленно попытается выполнить поиск в корневом домене и не попытается выполнить поиск по доменам из списка поиска. На странице руководства, похоже, указано, что следует попытаться выполнить поиск, если домен запроса не существует в корне, но мой преобразователь не делал этого при тестировании. В противном случае, если точки нет, сначала выполняется поиск элементов по порядку, а затем после исчерпания списка - корневой домен. Обратите внимание, вы можете установить search .
который помещает корневой домен в список поиска.
Также следует отметить, что разрешение вашего имени может никогда не попасть в resolv.conf, если запрос будет удовлетворен другим механизмом nsswitch.conf до того, как он туда попадет.