Вы находитесь на странице: 1из 3

@amarao

   
255,0   8,3
Пользователь карма рейтинг

 168 9,9k 126 423


Профиль Публикации Комментарии Избранное Подписчики

сегодня в 12:59

Взаимоотношения dhcpclient и resolv.conf'а в Linux
 Системное администрирование *, Сетевые технологии*, Серверное администрирование *, Настройка Linux *

Abstract: описание того, как обновляется файл /etc/resolv.conf в условиях работающего dhcp­клиента, специфика
различных ОС и варианты реализации.

Охват: Debian, Ubuntu, Centos/Fedora/RHEL; dhclient с resolvconf и без. NetworkManager не учитывается.

Лирика: Я только что потратил несколько дней (подробности на английском [1], [2]) разбираясь как правильно
сохранять 'options rotate' в /etc/resolv.conf в разных дистрибутивах при работающим DHCP. Оказалось, внятной
документации по этому вопросу нет, и информацию пришлось собирать из разных источников, исходных текстов и
экспериментальных данных. Дальше будет сухо и по делу.

О чём речь?

У компьютера сетевой интерфейс принципиально может быть сконфигурирован тремя видами: вручную/
специализированным софтом, статически заданными настройками и через DHCP­клиент. (Есть ещё сколько­то
экзотики, но эти три — основные методы). Первый метод нам не интересен, со статической конфигурацией всё
просто — как написано, так и будет. DHCP интересен тем, что компьютер запрашивает настройки по сети «у кого­
то». Протокол DCHP имеет множество опций (настроек), которые могут изменять совершенно неожиданные
настройки компьютера — часовой пояс, адрес сервера с точным временем, таблицу маршрутизации, имя или домен
сервера, и т.д. Из всего этого нас интересует возможность задавать настройки DNS.

Традиционно, настройки DNS­ресолвера хранятся в файле /etc/resolv.conf, и после обновления dhcp­аренды этот
файл обновляется. В этой статье объясняется, как именно "­ся" этот файл.

Устройство DHCP client
Существует несколько реализаций dhcp­клиента, нас интересует ISC DHCP, как наиболее распространённая.
Сам клиент называется /sbin/dhclient, однако, стандартно, для обновления настроек, вызывается не он, а
/sbin/dhclient­script. dhclient­script вызывает dhclient и использует его ответ для изменения разных частей системы.
В самом dhclient­script есть функция make_resolv_conf, которая, собственно, и создаёт файл resolv.conf.

Для удобства модификации (и запутывания системных администраторов) у dhclient­script'а есть хуки. Их положение
разнится (в Ubuntu Xenial и Debian Stretch это /etc/dhcp/dhclient­exit­hooks.d, для какой­то версии Centos —
/etc/dhclient­enter­hooks/ и т.д.). Хуки есть двух видов — entry и exit. Entry вызываются когда dhcp­client только­
только получает (получил) аренду, exit, соответственно, когда освободил (или она истекла). В хуках можно
прописать свою версию функции make_resolv_conf(), и тогда dhclient­script будет вызывать её, а не встроенную.

resolvconf
Этим активно пользуются авторы пакета resolvconf, который позволяет формировать файл /etc/resolv.conf по
заданному шаблону (а не фиксированно, как в случае родной реализации dhclient­script). Они кладут файл (в
Debian/Ubuntu) /etc/dhcp/dhclient­enter­hooks.d/resolvconf, который вызывает resolvconf ­u (обновление) для
создания новой версии resolvconf'а.

Чтобы не мешать жить dhcpclient­script, 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
head и tail просто дописываются куда положено, а вот base позволяет всякие странные штуки, которые описываются
в man resolvconf в разделе «CONSUMERS OF NAMESERVER INFORMATION»).

Специфика RHEL/Centos/Fedora
Red Hat использует свою версию скрипта dhclient­script, весьма обширную и сложную, учитывающую множество
настроек из ifcfg­ethXXX, в частности, интересовавшую меня опцию RES_OPTIONS. Debian и Ubuntu используют
большей частью апстримовую версию, в которой такие изыски отсутствуют. В Centos 7 одно время в этом скрипте
был баг, приводивший к тому, что при наличии строчки 'options' в /etc/resolv.conf при перезагрузке, из него
удалялись все остальные строчки, кроме строчки с options, причём новые DNS­сервера в файл не добавлялись.

  Ubuntu, Debian, Fedora, RHEL, Centos, DHCP, DNS, resolv.conf

   
  —    1,8k  2  8 
  
  
 

карма рейтинг
 @amarao   255,0   8,3

Реклама

Похожие публикации

+62 Debian или Ubuntu: кому помогать?
 32,3k   16   29

+70 Автоматическая преднастроенная установка Ubuntu: isolinux и preseed
 24,9k   227   26

+40 Пересборка пакетов для Ubuntu (Debian)
 7,8k   76   28

Комментарии (0)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Интересные публикации 

В США снесли не тот дом из­за ошибки на картах Google Maps   27

Выбор первого фотоаппарата — без рекламы, брендов, картинок и почти без технических
деталей   23

Проект компании RIT Technologies по созданию альтернативы сетям Wi­Fi находится под
угрозой из­за финансовых проблем   0

«Космическая связь» начнёт подключать абонентов к широкополосному спутниковому
интернету в мае   25

Гибридная трансформация: ИТ­сервисы с человеческим лицом   0

Рабочая станция Dell Precision 15 7000 Series (7510): Компромиссов больше нет   25

Oracle подала в суд на HP Enterprise за незаконный «перехват» клиентов и программного
обеспечения   0

Готовые сценарии автоматизации продаж, которые можно запустить за 2 минуты   2

Раскройте свое увлечение: делайте то, что нравится, и деньги не заставят себя ждать   0
Amazon CloudDrive: не факт, что сможешь скачать обратно   13

Вакансии 

ios разработчик
Москва • Полный рабочий день

Team lead iOS
Москва • Полный рабочий день

Mac OS разработчик
Москва • Полный рабочий день  • от 100 000 до 150 000 руб.

Senior PHP ­ Developer
Москва • Полный рабочий день  • от 140 000 до 180 000 руб.

Senior Ruby on Rails
Москва • Полный рабочий день  • от 150 000 руб.

Создать резюме  Разместить вакансию

Заказы 

Создать форму обратной связи на сайте
24.03.2016 • 0 откликов • Цена договорная

Сверстать пошагового помощника + ценовой слайдер
24.03.2016 • 0 откликов • Цена договорная

Вёрстка очень простой, чистой странички
24.03.2016 • 2 отклика • Цена договорная

Составная анимация простого логотипа (головы зайца)
24.03.2016 • 1 отклик

Написать софт по распознованию автомобильных номеров
24.03.2016 • 1 отклик

Зарегистрироваться  Разместить заказ