Linux resolv conf options

Linux resolv conf options

Резолвер — это набор подпрограмм в библиотеке C, которые предоставляют доступ к Internel DNS (Domain Name System) (Системе Доменных Имен Интернет) (прим. пер. — DNS обеспечивает возможность преобразования символьных имен машин в IP-адреса и наоборот, IP-адресов в символьные имена). Файл с настройками для резолвера содержит информацию, которую первым делом читают подпрограммы резолвера, вызванные каким-либо процессом. Данный файл устроен так, чтобы его мог читать человек и содержит список ключевых слов и значений, которые предоставляют резолверу различную информацию.

В нормально настроенной системе данный файл не нужен: запросы будут обрабатываться сервером на локальном хосте, имя домена определяется из имени машины, а путь поиска машины по домену конструируется из имени домена.

Вот разные параметры конфигурации: nameserver адрес сервера имен в Интернет (в нотации xxx.xxx.xxx.xxx), который будет обрабатывать запросы от резолвера. Серверов имен может быть максимум MAXNS (в данный момент — 3), по одному на каждой строке. Если задано несколько серверов, то библиотека резолвера опрашивает их в порядке перечисления. Если записей nameserver нет, то по умолчанию используется сервер имен на локальной машине. (Используемый алгоритм пытается подключиться к серверу имен и, если запрос не был обработан через некоторый промежуток времени, делается попытка подключиться к следующему серверу имен, и так до тех пор пока не будет обработан весь список серверов, затем повторить процедуру, пока не будет достигнуто максимальное количество повторов). domain Локальное имя домена. Большинство запросов на имена машин в этом домене смогут использовать лишь краткие имена, без указания имени домена. Если записей domain нет, то домен определяется из имени локальной машины, которое возвращается функцией gethostname (); доменной частью имени считается все, что следует после первой точки `.’. Наконец, если имя машины не содержит доменной части, назначается корневой домен. search Список для поиска имен машин. Список обычно определяется из локального имени домена; по умолчанию он содержит только имя локального домена. В списке может быть задано несколько доменов, которые должны следовать за ключевым словом search и отделяться друг от друга пробелами или табуляциями. В большинстве случаев, если в запросе к резолверу задано короткое имя машины (без доменной части), то к нему будет поочередно добавляться каждый домен из заданного списка, пока не будет найдено полное совпадающее имя машины. Заметим, что данный процесс может быть медленным, и станет генерировать ощутимый сетевой траффик, если серверы, обслуживающие перечисленные в списке домены, не являются локальными, а также что запросы вернут ошибку тайм-аута, если сервер для одного из доменов недоступен. Список в данный момент ограничен шестью доменами, общая длина имен которых не должна превышать 256 символов. sortlist Разрешает сортировку адресов, которые возвращаются вызовом gethostbyname() . Опция sortlist задается с помощью пары: IP адрес/маска сети. Маска сети является необязательной, по умолчанию используется текущая маска сети. Пары из IP-адреса и необязательной маски сети разделяются прямой косой чертой. Может быть задано до 10 пар. пример: sortlist 130.155.160.0/255.255.240.0 130.155.0.0 options Данная опция разрешает изменение определенных переменных резолвера. Синтаксис такой: options опция . где опция может принимать одно из следующих значений: debug — устанавливает RES_DEBUG в _res.options. ndots: n — устанавливает порог для количества точек, которое должно быть в имени, заданном в res_query (см. resolver (@LIB_NETWORK_EXT@)) перед тем как будет создан начальный абсолютный запрос (initial absolute query) . По умолчанию, n «1», означает, что если в имени есть хоть одна точка, будет попытка считать это имя абсолютным перед добавлением к нему элементов из списка search .

Читайте также:  Чьи сборки windows самые лучшие

Ключевые слова domain и search являются взаимно исключающими. Если эти слова заданы оба, то будет работать то, которое задано последним.

Ключевое слово search в файле resolv.conf может быть перекрыто, если переменная окружения « LOCALDOMAIN » содержит список доменов, разделенных пробелами.

Ключевое слово options в файле resolv.conf может быть дополнено, если переменная окружения « RES_OPTIONS » будет содержать список вышеописанных опций резолвера.

Ключевое слово и значение должны быть в одной строке, и кроме того, ключевое слово (например, nameserver ), должно быть первым в строке. Значение должно отделяться от ключевого слова пробелом.

Источник

  • resolv.conf

Ordinarily, the resolv.conf(5) file is managed dynamically by various network service daemons. This is the default, and is intended for laptops and other highly mobile systems which may connect to different networks. It also works well for many desktop and server systems, so long as the network infrastructure is perfect.

For some systems, on some networks, the system administrator may wish to configure /etc/resolv.conf by hand. This leads to a conflict between the administrator’s changes, and the dynamic changes performed by the network service daemons.

If you edit resolv.conf by hand, and need to stop daemons from overwriting your changes, this page documents some of your options.

Configuring resolvconf

The resolvconf package may be installed. When it is, it includes various configuration files for other package (such as isc-dhcp-client). Specifically, resolvconf includes a file which modifies the make_resolv_conf shell function used by dhclient-script(8).

With resolvconf installed, you can tell it to do nothing whenever some daemon tries to modify resolv.conf, by putting resolvconf=NO in the /etc/resolvconf.conf file. (Note: this is not the /etc/resolv.conf file!)

Alternatively, you can use dns-nameserver entries in the appropriate stanza in /etc/network/interfaces:

Configuring dhclient

The most common daemon which overwrites resolv.conf is dhclient(8) (from isc-dhcp-client). In many cases, simply stopping this one daemon from touching the file will suffice.

Stop dhclient from modifying /etc/resolv.conf

Another approach makes use of dhclient-script’s hook scripts. According to dhclient-script(8):

  • When it starts, the client script first defines a shell function, make_resolv_conf , which is later used to create the /etc/resolv.conf file. To override the default behaviour, redefine this function in the enter hook script.

Therefore, we can stop dhclient from overwriting resolv.conf by doing the following:

The execute bit is required because dhclient-script uses run-parts(8) to decide which files to read. For that same reason, the filename must not contain anything but letters, digits, underscores and hyphens.

Modifying /etc/dhcp/dhclient.conf

The /etc/dhcp/dhclient.conf file can be populated with directives that will override the options sent by the DHCP server. For example, these directives will override the domain, search, and nameserver parameters that are placed into /etc/resolv.conf:

Another option is to remove «domain-name, domain-name-servers, domain-search» from the request line. However, this only works on some networks, and not on others. If the DHCP server sends unsolicited domain-name-servers (et al.) responses, dhclient will still heed them, and will still overwrite the resolv.conf file.

Making /etc/resolv.conf immutable

This approach will render /etc/resolv.conf immutable so that it cannot be changed, regardless of what packages are installed or what tries to modify it.

Obviously, you will need to put the appropriate content into the file before setting the immutable bit. Any time you wish to change the file, you will have to remove the bit, make your change, and then restore the bit.

Читайте также:  Тема для windows warcraft

Источник

Linux resolv conf options

Если этот файл не существует, то будет опрашиваться только служба имён на локальной машине; доменное имя определяется из имени узла, а домен поиска создаётся из имени домена.

Поддерживаются следующие параметры настройки:

nameserver IP-адрес сервера имён Задает интернет-адрес сервера имён, на который надо переправлять все запросы, или в виде адреса IPv4 (в точечном формате), или в виде адреса IPv6 в формате с двоеточиями (и, возможно, точками), определённом в RFC 2373. Может быть указано до MAXNS (в настоящее время 3, см. ) серверов имён, повторяя каждый раз ключевое слово. Если указано несколько серверов, функции разрешения имён будут обращаться к серверам имен в порядке перечисления. Если в файле нет строк nameserver, то функции разрешения имён используют сервер имён на локальной машине. (Функции разрешения имён работают по следующему алгоритму: попробовать обратиться к первому указанному серверу имён. Если нет ответа в отведённое время, попробовать обратиться к следующему серверу, и т.д. пока не будет исчерпан список серверов.) domain локальное доменное имя Для большинства запросов имён с доменом можно использовать короткие имена относительно локального домена. Если значение равно ‘.’, то это считается корневым доменом. Если строки domain в файле настройки нет, домен определяется из локального имени узла, возвращаемого gethostname(2); доменной частью считается всё после первой точки ‘.’. Наконец, если имя узла не содержит доменной части, то предполагается корневой домен. search список поиска Список поиска обычно определяется по имени локального домена; по умолчанию он содержит только имя локального домена. Это можно изменить, перечислив имена доменов, в которых нужно вести поиск, с ключевым полем search через пробел или символ табуляции. При разрешении запросов имён, в которых меньше точек чем указано в ndots (по умолчанию 1), будет использован каждый компонент пути поиска пока не будет найдено соответствующее имя. Список поиска сейчас может содержать не более шести доменов и не может быть длиннее 256 символов. sortlist Вызывает сортировку адресов, возвращаемых функцией gethostbyname(3). Список сортировки задается в виде пар IP-адрес/маска сети. Маску сети указывать не обязательно — по умолчанию используется естественная маска сети. IP-адрес и необязательная маска сети разделяются косой чертой. В списке можно указывать до 10 пар. Пример:

sortlist 130.155.160.0/255.255.240.0 130.155.0.0

options С помощью параметров изменяются некоторые внутренние переменные функций определения имён. Синтаксис options параметр .

где параметр может иметь следующие значения:

debug Задаёт RES_DEBUG в _res.options (только, если glibc собрана с поддержкой отладки; смотрите resolver(3)). ndots:n Задаёт минимальное количество точек, которые должны обязательно присутствовать в имени, переданном функции res_query(3) (см. resolver(3)) прежде чем будет выполнен начальный абсолютный запрос. По умолчанию n равно 1, поэтому если в имени есть точки, сначала имя пытаются разрешить как абсолютное, прежде чем добавлять к нему элементы из списка поиска. Значение этого параметра внутренне доходит до 15. timeout:n Задаёт промежуток времени, который функции определения имён будут ждать ответа от удалённого сервера имён перед тем как повторить запрос другому серверу имён. Измеряется в секундах, по умолчанию RES_TIMEOUT (в настоящее время равно 5, см. ). Значение этого параметра внутренне доходит до 30. attempts:n Задаёт количество раз, которое функции определения имён будут посылать запрос серверам имён перед тем как закончить работу и вернуть ошибку вызывавшему их приложению. По умолчанию равно RES_DFLRETRY (в настоящее время 2, см. ). Значение этого параметра внутренне доходит до 5. rotate Задаёт значение RES_ROTATE в _res.options, что приводит к циклическому выбору указанных серверов имён. Это приводит к распределению нагрузки среди серверов, чтобы исключить использование каждый раз только первого сервера всеми клиентами. no-check-names Задаёт значение RES_NOCHECKNAME в _res.options, что приводит к выключению в современном BIND проверки в поступающих именах узлов и почтовых именах недопустимых символов, таких как символы подчёркивания (_), не-ASCII или управляющие символы. inet6 Задаёт значение RES_USE_INET6 в _res.options. Это приводит к выполнению запроса AAAA раньше запроса A внутри функции gethostbyname(3), и отображению ответов IPv4 в «туннелированную форму» IPv6, если записи AAAA не были обнаружены, но есть запись типа A. ip6-bytestring (начиная с glibc 2.3.4) Задаёт значение RES_USE_BSTRING в _res.options. Это приводит к поиску обратной записи IPv6, используя формат значимых битов, описанный в RFC 2673; если этот параметр не задан, то используется полубайтовый формат. ip6-dotint/no-ip6-dotint (начиная с glibc 2.3.4) Устанавливает/сбрасывает значение RES_NOIP6DOTINT в _res.options. Если указан сброс (ip6-dotint), то выполняется поиск обратной записи IPv6 (устарел) в зоне ip6.int; если задана установка (no-ip6-dotint), то по умолчанию выполняется поиск обратной записи IPv6 в зоне ip6.arpa. По умолчанию этот параметр установлен. edns0 (начиная с glibc 2.6) Задаёт значение RES_USE_EDNSO в _res.options. Включает поддержку расширений DNS, описанных в RFC 2671. single-request (начиная с glibc 2.10) Задаёт значение RES_SNGLKUP в _res.options. По умолчанию, glibc начиная с версии 2.9 выполняет поиск по IPv4 и IPv6 параллельно. Некоторые приложения DNS-серверов не могут обработать такие запросы должным образом и делают паузу между ответами на запрос. Этот параметр отключает данное поведение, что заставляет glibc делать запросы IPv6 и IPv4 последовательно (что замедляет процесс определения имени). single-request-reopen (начиная с glibc 2.9) Задаёт RES_SNGLKUPREOP в _res.options. Для разрешения имён используется единый сокет для запросов A а AAAA. Некоторая аппаратура ошибочно посылает обратно только один ответ. Когда это происходит, клиент остаётся ждать второго ответа. Указание этого параметра изменяет такое поведение так, что если два запроса с одного порта не обрабатываются правильно, то сокет будет закрыт и открыт новый перед посылкой второго запроса. no-tld-query (начиная с glibc 2.14) Задаёт значение RES_NOTLDQUERY в _res.options. Этот параметр указывает res_nsearch() не пытаться определить неполное имя как если бы это домен верхнего уровня. Данный параметр может привести к проблемам, если сайт указал «localhost» как TLD, но содержит localhost в одном или более элементах списка поиска. Данный параметр не действует, если не установлен RES_DEFNAMES или RES_DNSRCH. use-vc (начиная с glibc 2.14) Задаёт RES_USEVC в _res.options. Данный параметр включает принудительное использование TCP для запросов DNS.

Читайте также:  Windows 10 web разработка

Ключевые слова domain и search являются взаимоисключающими. Если они указаны более одного раза, то используется значение последнего.

Значение ключевого слова search в системном файле resolv.conf может быть изменено назначением переменной окружения для определённого процесса LOCALDOMAIN списка доменов, разделённых пробелами.

Значение ключевого слова options в системном файле resolv.conf может быть дополнено назначением переменной окружения для определённого процесса RES_OPTIONS списка вышеописанных в options параметров настройки функций определения имён.

Ключевое слово и значение должны быть в одной строке, и кроме того, ключевое слово(например, nameserver), должно быть в начале строки. Значение должно отделяться от ключевого слова пробельным символом.

Строки, в которых в первой колонке содержится точка с запятой (;) или символ решётки (#), считаются комментариями.

Источник

Оцените статью