Назад | Перейти на главную страницу

Порядок поиска разрешения имен в Unix / Linux

Допустим, в /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 до того, как он туда попадет.