Аннотация: описание того, как обновляется файл /etc/resolv.conf при работе DHCP-клиента, особенности разных ОС и варианты реализации.
Охват: Debian, Ubuntu, Centos/Fedora/RHEL; dhclient с resolvconf и без него.
NetworkManager не учитывается.
Слова: Я просто провел несколько дней (подробности на английском языке [ 1 ], [ 2 ]) выяснить, как правильно сохранить «опции вращения» в /etc/resolv.conf в разных дистрибутивах с работающим DHCP. Оказалось, что четкой документации по этому вопросу нет, и информацию приходилось собирать из различных источников, исходных текстов и экспериментальных данных.
Дальше будет сухо и по делу.
О чем мы говорим? Сетевой интерфейс компьютера можно настроить тремя способами: вручную/специализированным программным обеспечением, статически заданными настройками и через DHCP-клиент. (Есть и более экзотические способы, но эти три — основные).
Первый способ нам не интересен, со статической конфигурацией все просто — как написано, так и будет. DHCP интересен тем, что компьютер запрашивает настройки по сети у «кого-то».
Протокол DCHP имеет множество опций (настроек), которые могут изменить совершенно неожиданные настройки компьютера – часовой пояс, адрес сервера с точным временем, таблицу маршрутизации, имя сервера или домен и т.д. Из всего этого нас интересует возможность установки настроек DNS. .
Традиционно настройки преобразователя DNS хранятся в файле /etc/resolv.conf, и после продления аренды DHCP этот файл обновляется.
В этой статье объясняется, как именно «-» сделать этот файл.
DHCP-клиентское устройство Существует несколько реализаций DHCP-клиента, нас интересует ISC DHCP как наиболее распространенный.
Сам клиент называется /sbin/dhclient, однако стандартно для обновления настроек вызывается не он, а /sbin/dhclient-script. dhclient-script вызывает dhclient и использует его ответ для изменения различных частей системы.
Сам dhclient-скрипт содержит функцию make_resolv_conf, которая, собственно, и создает файл resolv.conf. Для простоты модификации (и путаницы для системных администраторов) в dhclient-script есть перехватчики.
Их положение варьируется (в Ubuntu Xenial и Debian Stretch это /etc/dhcp/dhclient-exit-hooks.d, в некоторых версиях Centos это /etc/dhclient-enter-hooks/ и т.д.).
Есть два типа крючков: вход и выход. Запись вызывается перед основной, когда dhclient-script, выход в конце.
Вы можете написать в хуках свою версию функции make_resolv_conf(), и тогда dhclient-script будет вызывать ее, а не встроенную.
Что именно происходит с арендой, определяется переменной причины (примеры значений: PREINIT, BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL, RELEASE и т. д.).
Спасибо Максжуркин за указание (исправление) неточностей в данном разделе.
разрешение Этим активно пользуются авторы пакета resolvconf, который позволяет создавать файл /etc/resolv.conf по заданному шаблону (а не фиксированно, как в случае с нативной реализацией dhclient-script).
Они помещают файл (в Debian/Ubuntu) /etc/dhcp/dhclient-enter-hooks.d/resolvconf, который вызывает resolvconf -u (обновление) для создания новой версии resolvconf. Чтобы не мешать dhcpclient-скрипту, resolvconf управляет файлом /run/resolvconf/resolv.conf, а пакет resolvconf (не путать с предоставляемой им программой) во время установки заменяет /etc/resolvconf символической ссылкой.
.
/run/resolvconf/resolv .
conf. Типичная проблема при использовании resolvconf — отсутствие символической ссылки.
Если его нет, то dhclient-script просто перезапишет /etc/resolv.conf настройками DHCP-сервера, а resolvconf обновит свой файл в углу, лишь выдав предупреждение о том, что /etc/resolv.conf нет символическая ссылка.
Шаблоны resolvconf довольно просты:
- /etc/resolvconf/resolv.conf.d/head
- /etc/resolvconf/resolv.conf.d/base
- /etc/resolvconf/resolv.conf.d/tail
Особенности RHEL/Centos/Fedora Red Hat использует собственную версию скрипта dhclient-script, достаточно обширную и сложную, учитывающую множество настроек из ifcfg-ethXXX, в частности, заинтересовавшую меня опцию RES_OPTIONS. Debian и Ubuntu в основном используют исходную версию, в которой отсутствуют такие функции.
В Centos 7 в свое время в этом скрипте была ошибка, которая приводила к тому, что если в /etc/resolv.conf была строка 'options', то при перезагрузке из нее удалялись все остальные строки, кроме строки с опциями, а новые DNS-серверы в файл не добавлялись.
Теги: #Сетевые технологии #Системное администрирование #Администрирование серверов #Конфигурация Linux #Fedora #dns #centos #rhel #ubuntu #Debian #dhcp #resolv.conf
-
Интернет-Отношения...работают Ли Они?
19 Oct, 24 -
Установка Ос С Помощью Smartstart
19 Oct, 24