неділя, 26 лютого 2012 р.

DNS в Ubuntu 12.04

В Ubuntu 12.04 произошли приятные изменения при разрешении имён в DNS. Рассмотрим два нововведения:
Переключение на resolvconf с файла /etc/resolv.conf
Dnsmasq теперь резолвер DNS по умолчанию в Desktop версии.

Переключение на resolvconf с файла /etc/resolv.conf

resolvconf это набор скриптов для управления разрешением имён в DNS. Наиболее важное для пользователей изменение то, что ручные изменения в /etc/resolv.conf будут потеряны и перезаписаны триггерами resolvconf. Вместо этого, resolvconf использует информацию из DHCP, от плагинов Network Manager и параметры dns-nameservers в /etc/network/interfaces, чтобы создать список DNS серверов и записать информацию в /etc/resolv.conf.

Возникают следующие вопросы:

  • Используется статическая IP конфигурация. Куда класть инфу о моих DNS серверах.
    DNS конфигурация для статических интерфейсов должна быть описана в соответствующих записях dns-nameservers, dns-search и dns-domain в /etc/network/interfaces
  • Как перекрыть конфигурацию resolvconf или добавить свои записи?
    Resolvconf хранит в /etc/resolvconf/resolv.conf.d/ каталоге файлы base, head, original и tail файлы. Всё хранится в resolv.conf формате:
    • base: используется, когда нет вообще никаких данных
    • head: используется для заголовка в /etc/resolv.conf
    • original: просто резервная копия оригинального resolv.conf во время установки resolvconf
    • tail: любая информация из этого файла добавляется в конец /etc/resolv.conf
  • Не хочу resolvconf. Как отключить resolvconf?
    Не рекомендуется отключать resolvconf, но ссылку /etc/resolv.conf можно заменить настоящим файлом /etc/resolv.conf. Но в будущих версиях Ubuntu вы можете получить множество несогласованных resolv.conf от разных сетевых программ.

Dnsmasq теперь резолвер DNS по умолчанию в Desktop версии.

В desktop установке, DNS сервер по умолчанию выставлен в 127.0.0.1, который указывает на управляемый NetworkManager dnsmasq сервер.

Это сделано для лучшей поддержки DNS у VPN пользователей, лучше обрабатывать DNS проблемы и восстанавливаться после сбоя.
Этот dnsmasq сервер НЕ кеширующий сервер созданный в целях безопасности, который снижает риски при отравлении DNS кеша или "прослушивание" DNS трафика в многопользовательской среде.

Большим преимуществом является то, что при подключении к VPN, вместо того, чтобы весь DNS трафик отправлять через VPN как раньше, отправлять только DNS запросы, связанные с подсетями и доменами, анонсированные VPN сервером. Это особенно важно из-за латентности связи VPN.

Для обработки сбоев DNS, Dnsmasq посылает DNS запросы к нескольким серверам DNS (если они будут указаны) и может обнаружить "мёртвых" и просто проигнорировать их. Если DNS "придёт в норму", то информация от него снова будет использована.

Сравните это с работой Libc при разрешении DNS имён, где состояние DNS сервера нельзя сохранить, так как libc это всего лишь библиотека, и поэтому каждое приложение будет испытывать таймауты при использовании "мёртвого" DNS сервера до переключения на следующий рабочий DNS.

Вопросы:

  • Как узнать какие DNS сервера я использую? Что-то типа cat /etc/resolv.conf.
    nm-tool даст информацию об ваших соединениях в NetworkManager, как если бы вы получили её через GUI.
    Ещё информацию можно получить из файла /run/nm-dns-dnsmasq.conf
  • Не хочу локальный резолвер у себя. Как отключить dnsmasq?
    В /etc/NetworkManager/NetworkManager.conf закомментируйте dns=dnsmasq строку и
    sudo restart network-manager
    .

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments