«DNS и BIND»
Предисловие
Возможно, вам не так уж много известно о системе доменных имен (Domain Name System), но, работая в Интернете, вы неизбежно ее используете. Всякий раз, отправляя сообщения электронной почты или исследуя просторы World Wide Web, вы полагаетесь на DNS - систему доменных имен.
Дело в том, что люди предпочитают запоминать имена компьютеров, а компьютерам больше нравится обращаться друг к другу по числовым адресам. В Интернете этот адрес имеет разрядность 32 , то есть может быть числом от нуля до четырех с хвостиком миллиардов.1 Компьютеры с легкостью запоминают такие вещи, потому что обладают большими объемами памяти, идеально подходящей для хранения чисел, но для людей эта задача не в пример сложнее. Попробуйте случайным образом выбрать из телефонной книги десять номеров и запомнить их. Непросто? Теперь вернитесь к началу телефонной книги и сопоставьте каждому номеру случайный код района. Примерно настолько же сложно будет запомнить 10 произвольных интернет-адресов.
Отчасти именно по этой причине необходима система доменных имен. DNS занимается двунаправленным отображением имен узлов, подходящих для запоминания людьми, и интернет-адресов, с которыми работают компьютеры. По сути дела, DNS в сети Интернет является не только средством работы с адресами, но и стандартным механизмом для предоставления и получения разнообразной информации об узлах сети.
DNS нужен практически для каждой программы, обеспечивающей сетевое взаимодействие, в том числе программам для работы с электронной почтой, терминальным клиентам (например, ssh), средствам передачи файлов, таким как f t p , и, разумеется, веб-броузерам, таким как Microsoft Internet Explorer.
Другой важной особенностью DNS является способность системы распространять информацию об узле по всей сети Интернет. Хранение доступной информации об узле на единственном компьютере полезно лишь для тех, кто пользуется этим компьютером. Система доменных имен обеспечивает получение информации из любой точки сети.
Более того, DNS позволяет распределять управление информацией об узлах между многочисленными серверами и организациями. Нет необходимости передавать данные на какой-то центральный сервер или регулярно синхронизировать свою базу данных с «основной». Достаточно убедиться, что ваш раздел, называемый зоной, соответствует действительности на ваших DNS-серверах. А они, в свою очередь, сделают информацию о зоне доступной всем остальным DNS-серверам сети.
Поскольку база данных DNS является распределенной, в системе должна быть предусмотрена возможность поиска нужной информации путем опроса множества возможных источников ее получения. Система доменных имен наделяет DNS-серверы способностью находить нужные источники информации и получать сведения по любой зоне.
Разумеется, система DNS не лишена недостатков. К примеру, в целях избыточности базы данных система позволяет хранить зональную информацию на более чем одном сервере, но при этом возникает опасность десинхронизации копий зональной информации.
Но самая большая проблема, связанная с DNS, несмотря на широкое распространение в сети Интернет, - это реальное отсутствие хорошей документации по работе с системой. Большинство администраторов сети Интернет вынуждены обходиться лишь той документацией, которую считают достаточной поставщики используемых программ, а также тем, что им удается выудить из соответствующих списков интернет-рассылок и конференций Usenet.
Такой дефицит документации означает, что понимание предельно важной интернет-службы, одной из монументальных основ сегодняшней сети Интернет, либо передается от администратора к администратору как ревностно хранимая семейная тайна, либо постоянно изучается повторно отдельными программистами и разработчиками. Новые администраторы зон повторяют ошибки, уже бесчисленное число раз сделанные другими.
Цель этой книги - изменить сложившуюся ситуацию. Мы осознаем, что не у каждого читателя есть время и желание становиться специалистом по DNS. У большинства из вас есть достаточно других занятий помимо управления зонами и DNS-серверами: системное администрирование, разработка сетевых инфраструктур или разработка программного обеспечения. Заниматься исключительно DNS может только сотрудник безумно большой организации. Мы постарались предоставить информацию, достаточную для решения основных рабочих задач, будь то управление небольшой зоной или целой международной системой, работа с единственным сервером имен или наблюдение за сотней серверов. Извлеките из книги нужный вам минимум и возвращайтесь к ней по мере необходимости.
DNS - это сложная тема, настолько сложная, что взяться за нее пришлось не одному, а двум авторам; но мы постарались представить систему настолько прозрачно и доступно, насколько это возможно. В первых двух главах содержится теоретический обзор и достаточный для применения объем практической информации, а в последующих главах использование системы доменных имен рассмотрено более подробно. С самого начала мы предлагаем читателям нечто вроде дорожной карты, чтобы каждый мог выбрать собственный путь изучения книги, соответствующий рабочим задачам или интересам.
Когда речь пойдет о программах, обеспечивающих работу DNS, мы практически целиком сконцентрируемся на инструменте под названием BIND, Berkeley Internet Name Domain, который является наиболее популярной (и наиболее нами изученной) реализацией спецификаций DNS. Мы старались представить в этой книге выжимку из нашего опыта управления и поддержки зон с помощью BIND. (Так получилось, что некоторое время одна из наших зон являлась самой большой зоной сети Интернет; правда, это было очень давно). Где это было возможно, мы включали реальные программы, используемые нами в администрировании; многие из них переписаны на языке Perl с целью достижения большей скорости работы и повышения эффективности.
Надеемся, эта книга поможет вам познакомиться с системой DNS и инструментом BIND, если вы еще новичок, лучше понять их работу, если вы с ними уже знакомы, и приобрести ценное понимание и опыт, даже если вы уже знаете DNS и BIND как свои пять пальцев.
Версии
Четвертое издание этой книги затрагивает новые версии BIND - 9.3.2 и 8.4.7 , а также более старые версии BIND 8 и 9. Несмотря на то, что на момент написания этой книги версии 9.3.2 и 8.4.7 являются наиболее свежими, они пока не получили широкого распространения в составе UNIX-систем - отчасти потому, что обе версии были выпущены недавно, а многие поставщики настороженно относятся к использованию новых программ. Мы время от времени упоминаем и другие версии BIND, поскольку многие поставщики продолжают распространять программы, содержащие код, основанный на более старых версиях, в составе своих UNIX-разработок. Если определенная возможность доступна только в версии 8.4.7 или 9.3.2 либо существуют различия в поведении версий, мы постараемся четко определить, что именно работает и для какой версии BIND.
В наших примерах мы очень часто прибегаем к служебной программе DNS - nslookup. Мы пользуемся nslookup из комплекта поставки BIND версии 9.3.2. Более старые версии nslookup обеспечивают большую часть функциональности (но не всю) nslookup версии 9.3.2. В большинстве примеров мы использовали команды, доступные почти во всех версиях nslookup; случаи, когда это было невозможно, отмечены отдельно.
Что нового в пятом издании?
Текст книги был обновлен, чтобы соответствовать наиболее поздним версиям BIND; добавлен следующий новый материал:
- Описание технологии SPF (Sender Policy Framework) - в главе 5.
- Более подробное рассмотрение динамических обновлений и механизма NOTIFY, включая и подписываемые динамические обновления (signed dynamic updates), а также описание нового для BIND 9 механизма update-policy - в главе 10.
- Поэтапная передача зоны - также в главе 10.
- Зоны ретрансляции, поддерживающие передачу по условию (conditional forwarding), - в главе 10.
- Прямое и обратное отображение адресов в контексте технологии IPv6 с использованием записей новых типов A A A A и ip6.arpa - вконце главы 10.
- Новый механизм подтверждения подлинности транзакций - транзакционные подписи (transaction signatures, известные также как TSIG) - описан в главе 11.
- Более подробное рассмотрение вопросов обеспечения безопасности DNS-серверов - в главе 11.
- Более подробное рассмотрение работы с брандмауэрами в сети Интернет - в главе 11.
- Описаны обновленные расширения DNS, связанные с безопасностью (DNS Security Extensions или DNSSECbis), представляющие собой механизм цифровой подписи зональных данных, - все в той же 11 главе.
- Новая глава 16 посвящена развертыванию полноценной архитектуры DNS в масштабах организации.
- В главе 17 описывается ENUM, технология для отображения телефонных номеров в формате стандарта E.164 в URI-адреса.
- Стандарт кодирования символов Unicode в именах доменов (IDN, Internationalized Domain Names) описан в главе 17.
- Обновлен раздел, посвященный совместной работе Active Directory и BIND, - в главе 17.
Структура
Порядок следования глав настоящей книги приблизительно соответствует возможному развитию зоны и росту знаний ее администратора.
В главах 1 и 2 обсуждается теория системы доменных имен. В главах с 3 по 6 рассматриваются вопросы, связанные с принятием решений по созданию собственных зон, а также действия администратора в случае необходимости создать зону. Следующая часть книги, главы с 7 по 11, посвящена сопровождению зон, настройке узлов для использования DNS-серверов, планированию развития зон, созданию доменов различных уровней и безопасности серверов. Наконец, главы с 12 по 16 посвящены разрешению сложностей, возникающих при работе с различными инструментами, общим проблемам и забытому искусству программирования с применением библиотек DNS-клиента. Глава 16 сводит знания в единый архитектурный ансамбль. Перечислим темы по главам:
Описывает исторический фон создания системы, посвящена проблемам, приведшим к созданию DNS, а также собственно обзору теории системы доменных имен.
Посвящена более подробному рассмотрению теоретических основ DNS, в частности организации пространства имен в системе DNS, доменов, зон и DNS-серверов. Там же рассматриваются такие важные понятия, как разрешение адресов и кэширование.
Рассматриваются получение пакета BIND в случае его отсутствия, применение пакета, когда он уже у вас в руках, определение и выбор доменного имени, а также установление связи с организацией, которая обладает полномочиями делегировать выбранную зону.
Подробное рассмотрение того, как установить два первых DNS-сервера на основе BIND, включая создание базы данных серверов, запуск и диагностику их работы.
Рассказывает о записи DNS типа MX, которая позволяет администраторам задавать альтернативные узлы, которым передается на обработку почта для определенных адресов. В этой главе описаны стратегии маршрутизации почты для различных типов сетей и узлов, включая сети с интернет-брандмауэрами и узлы, не имеющие прямого подключения к сети Интернет. В этой главе также повествуется о технологии Sender Policy Framework, позволяющей использовать DNS для авторизации отправления почты с определенных почтовых адресов.
Рассказывает о том, как настраивать клиентскую часть (resolver) BIND, а также об особенностях реализаций клиента, применяемых на платформах Windows.
Посвящена регулярным действиям администратора, выполнение которых необходимо для поддержания устойчивой работы зон, находящихся под его началом, в частности проверке состояния DNS-сервера и вопросам, касающимся авторитетных серверов зоны.
Рассказывает о планировании роста и эволюции зон, включая вопросы о том, как вырасти большим, а также о планировании переездов и перебоев в работе.
О радостях, связанных с обретением потомства. Мы расскажем, когда имеет смысл заводить детей (создавать поддомены), как их называть, как их заводить (!) и как присматривать за ними.
Рассказывает о параметрах настройки сервера имен, которые используются не очень часто, но могут помочь в настройке производительности DNS-сервера и упростить процесс администрирования.
Посвящена обеспечению безопасности и тем настройкам DNS-сервера, которые относятся к работе с интернет-брандмауэрами, а также двум новым технологиям DNS, связанным с безопасностью: DNS Security Extensions и подписям транзакций (Transaction Signatures).
Подробно рассказывает о самых популярных инструментах DNS- отладки и содержит описания способов извлечения неявной информации из удаленных DNS-серверов.
Это Розеттский камень1 отладочной информации BIND. Глава поможет разобраться в таинственной отладочной информации, создаваемой пакетом BIND, а это, в свою очередь, поможет лучше понять, как работает DNS-сервер.
Содержит описания и способы разрешения многих распространенных проблем, связанных с использованием DNS и BIND, а также рассказывает о более редких случаях, связанных с ошибками, диагностика которых может вызывать затруднения.
Рассказывает о том, как использовать функции библиотеки клиента BIND для опроса DNS-серверов и получения информации в программе на языке C или Perl. Приводится исходный текст полезной (как мы надеемся) программы, которая проверяет работоспособность DNS-серверов и их Авторитетность.
Описывает полноценную инфраструктуру DNS, включающую внешние DNS-серверы, ретрансляторы, а также внутренние DNS- серверы.
Посвящена незатронутым темам. Она содержит описание использования масок (wildcards) в DNS, принципов работы с узлами и сетями, не имеющими постоянного подключения к сети Интернет, кодировки сетевых имен, дополнительных типов записей ENUM и IDN, а также работы с Active Directory.
Содержит предельно подробный справочник по форматам, используемым в запросах и ответах DNS, а также полный перечень определенных в настоящее время типов RR-записей (resource records).
Перечисление наиболее важных особенностей самых распространенных версий BIND.
Содержит пошаговые инструкции по сборке BIND версии 9.3.2 в Linux.
Перечисление существующих в настоящее время доменов высшего уровня сети Интернет.
Содержит справочник по синтаксису и семантике каждого из существующих параметров настройки серверов и библиотек клиента.
Для кого эта книга
Прежде всего эта книга предназначена для системных и сетевых администраторов, которым приходится управлять зонами и одним или несколькими DNS-серверами, но она содержит материал, который будет интересен проектировщикам сетей, почтовым администраторам и многим другим людям. Не все главы одинаково интересны для столь разношерстной аудитории, и, конечно же, читателю нет смысла копаться во всех семнадцати главах, чтобы найти интересующий его материал. Мы надеемся, что следующая карта поможет выстроить правильный путь по главам книги.
Следует прочесть главы 1 и 2, чтобы получить теоретическую подготовку по DNS, главу 3 - в целях получения информации о первых шагах и выборе подходящего доменного имени, главы 4 и 5 - чтобы узнать, как происходит настройка зоны «с нуля». Глава 6 объясняет, как настроить узлы для работы с новыми DNS-серверами. Затем следует обратиться к главе 7, в которой объясняется, как «подкачать» объем, добавляя серверы и данные в зону. Главы с 12 по 14 содержат описание инструментов и методов, помогающих в устранении проблем.
Может быть полезно прочитать главу 6, чтобы узнать, как настраивать DNS-клиенты на различных узлах, и главу 7, чтобы получить информацию о том, как грамотно сопровождать зоны. В главе 8 содержатся инструкции, связанные с планированием роста и развития зоны, которые должны быть особенно полезны людям, занятым в администрировании больших зон. Глава 9 рассказывает о том, как стать родителем, то есть о создании поддоменов, и является учебником этикета, обязательным к прочтению теми, кто планирует совершить этот трудный шаг. В главе 10 рассмотрены многие новые возможности BIND версий 9.3.2 и 8.4.7. Глава 11 посвящена обеспечению безопасности DNS-серверов, и для опытных администраторов может представлять особенный интерес. Главы с 12 по 14 содержат описание инструментов и действий, которые помогут устранить возникшие проблемы; эти главы могут оказаться занимательным чтением даже для очень опытных администраторов. Глава 16 поможет администраторам осмыслить общее положение дел.
Рекомендуется прочесть главу 5, чтобы изучить процесс настройки маршрутизации почты в таких сетях, и главы 11 и 17, которые содержат описание создания независимой инфраструктуры DNS.
В целях освоения теории DNS предлагается прочесть главы 1 и 2, а затем главу 15, в которой содержится подробное рассмотрение программирования при помощи библиотечных функций BIND.
Рекомендуется прочесть главы 1 и 2 в целях освоения теории DNS, главу 12, чтобы научиться использовать nslookup и dig, а затем главу 14, чтобы узнать о способах разрешения возникающих сложностей.
Следует прочесть главы 1 и 2 в целях освоения теории DNS, главу 5, чтобы узнать, как сосуществуют DNS и электронная почта, и главу 12, в которой описаны инструменты nslookup и dig; эта глава научит извлекать информацию о маршрутизации почты из пространства доменных имен.
Могут прочесть главы 1 и 2 в целях освоения теории DNS, а затем любые главы по желанию!
Мы предполагаем, что читатель знаком с основами администрирования UNIX-систем, сетевым взаимодействием TCP/IP, а также программированием на уровне простых сценариев командного интерпретатора или языка Perl. При этом никаких других специальных знаний не требуется. При появлении новых терминов и понятий они насколько возможно подробно объясняются в тексте книги. По возможности мы использовали аналогии с системами UNIX (и реальным миром), чтобы облегчить читателю восприятие новых для него концепций.
Примеры программ
Исходные тексты программ-примеров, приводимых в книге1, доступны для загрузки по протоколу FTP по следующим адресам:
- ftp://ftp.uu.net/published/oreilly / nutshell/dnsbind/dns.tar.Z
- ftp://ftp.oreilly.com/published/oreilly/nutshell/dnsbind/
% zcat dns.tar.Z | tar xf -
% zcat dns.tar.Z | tar xof -
Если команда zcat недоступна в системе, следует использовать отдельные команды uncompress и tar.
Если не удается получить тексты примеров напрямую по сети Интернет, но существует возможность посылать и получать сообщения электронной почты, можно воспользоваться службой ftpmail. Чтобы получить справку по использованию службы ftpmail, необходимо отправить сообщение на адрес ftpmail@online.oreilly.com. Следует оставить пустым поле темы сообщения; тело письма должно содержать единственное слово - «help».
Использование кода примеров
Эта книга должна помогать вам в работе. Как правило, код из этой книги вы можете использовать в своих программах и документации. Наше разрешение не требуется, за исключением случаев, когда вы собираетесь воспроизвести значительный объем кода. К примеру, написание программы, использующей несколько фрагментов кода из этой книги, разрешения не требует. Продажа или распространение компакт-диска с примерами книг O'Reilly требует разрешения. Разрешение не требуется, если вы отвечаете на вопросы, приводя цитаты и примеры кода из этой книги. Разрешение требуется, если вы включаете большой объем кода примеров из этой книги в документацию к своему продукту.
Мы не настаиваем, чтобы вы ссылались на первоисточник, но будем признательны, если вы не забудете это сделать. Ссылка обычно включает название, имя автора, издательство и номер ISBN. Например: «DNS and BIND, Fifth Edition, by Cricket Liu and Paul Albitz . Copyright 2006 O'Reilly Media, Inc., 0-596-10057-4».
Если вам кажется, что вы используете примеры более вольно, чем предполагается приведенными выше примерами, или выходите за рамки свободного использования (fair use), свяжитесь с нами по адресу permissions@oreilly.com.
Safari® Enabled
Если на обложке книги есть пиктограмма «Safari® Enabl e d » , это означает, что книга доступна в сети Интернет посредством технологии O'Reilly Network Safari Bookshelf (Safari, книжная полка сети O'Reilly.)
Safari предлагает решение, превосходящее электронные книги. Это виртуальная библиотека, которая позволяет выполнять поиск в тысячах лучших технических книг, копировать примеры кода, загружать главы книг на свой компьютер и быстро находить ответы, когда требуется самая точная и свежая информация. Нашу технологию можно бесплатно опробовать по адресу http://safari.oreilly.com.
Цитаты
Цитаты из Льюиса Кэррола в каждой из глав приводятся по версии 2.9 издания Millenium Fulcrum электронного текста «Алисы в Стране чудес» из библиотеки проекта Гутенберга (Project Gutenberg) и по изданию 1.7 текста «Алиса в Зазеркалье». Цитаты в главах 1, 2, 5, 6, 8 и 14 из «Алисы в Стране чудес», а цитаты в главах 3, 4, 7, 9 - 1 3 , 1 5 - 1 7 - из «Алисы в Зазеркалье».
Благодарности
Авторы выражают благодарность Кену Стоуну (Ken Stone), Джерри Мак-Коллому (Jerry McCollom), Питеру Джеффу (Peter Jeffe ) , Хэлу Стерну (Hal Stern), Кристоферу Дарему (Christopher Durham), Биллу Уизнеру (Bill Wisner), Дэйву Керри (Dave Curry), Джеффу Окамото (Jeff Okamoto), Брэду Ноулзу (Brad Knowles), Роберту Эльцу (K. Robert Elz), а также Полу Викси (Paul Vixie) за их бесценный вклад в написание этой книги. Мы также хотели бы поблагодарить наших рецензентов Эрика Пирса (Eric Pearce), Джека Репенинга (Jack Repenning), Эндрю Черенсона (Andrew Cherenson), Дэна Тринкла (Dan Trinkle), Билла Лефевра (Bill LeFebvre) и Джона Секреста (John Sechrest) за их критику и предложения. Без помощи этих людей эта книга была бы совсем не такой (и была бы гораздо короче!).
За второе издание этой книги авторы выражают благодарность безупречной команде рецензентов: Дэйву Бэрру (Dave Barr), Найджелу Кэмпбеллу (Nigel Campbell), Биллу Лефевру, Майку Миллигану (Mike Milligan) и Дэну Тринклу.
За третье издание книги авторы признательны команде мечты технических рецензентов: Бобу Хэлли (Bob Halley), Барри Марголину (Barry Margolin) и Полу Викси.
Долг благодарности за четвертое издание причитается Кевину Данлэпу (Kevin Dunlap), Эдварду Льюису (Edward Lewis) и Брайану Веллингтону (Brian Wellington), первоклассной команде рецензентов.
За помощь в работе над пятым изданием авторы благодарят блестящую команду технических рецензентов: Джоао Дамаса (Joao Damas), Мэтта Ларсона (Matt Larson) и Пола Викси (Paul Vixie), а также Сильвию Хаген (Silvia Hagen) за помощь с IPv6 в последнюю минуту.
Крикет хотел бы отдельно поблагодарить своего бывшего руководителя Рика Норденстена (Rick Nordensten), образцового современного высокопроизводительного менеджера, под присмотром которого была написана первая версия этой книги; своих соседей, которые терпели его эпизодическую раздражительность в течение многих месяцев, и конечно же свою жену Пэйдж за постоянную поддержку и за то , что она мирилась с непрекращающимся, даже во время ее сна, стуком клавиш.
Что касается второго издания, Крикет хотел бы добавить слова благодарности в адрес своих бывших руководителей Регины Кершнер (Regina Kershner) и Пола Клоуда (Paul Klouda) за их поддержку работы Крикета с сетью Интернет. За помощь в работе над третьим изданием Крикет считает своим долгом поблагодарить своего партнера Мэтта Ларсона (Matt Larson), который участвовал в разработке Acme Razor; за четвертое он благодарит своих преданных пушистиков Дакоту и Энни - за их поцелуи и участие, а также замечательного Уолтера Б. (Walter B), который время от времени заглядывал в кабинет и проверял, как у папы дела. Что касается пятого издания, он должен упомянуть пополнение, замечательного малыша Джи (Baby G.), и передает благодарности друзьям и коллегам в Infoblox за их тяжелую работу и великодушную поддержку, а также за их компанию.
Пол благодарит свою жену Катерину за ее терпение, за многочисленные разборы полетов и за доказательство того, что она в свободное время может гораздо быстрее сшить стеганое одеяло, чем ее м уж напишет свою половину книги.
Добавить комментарий