Опубликован: 04.07.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Европейский Университет в Санкт-Петербурге
Лекция 5:

DNS

< Лекция 4 || Лекция 5: 1234 || Лекция 6 >

Все привыкли к тому, что имена компьютеров в Интернете выглядят как несколько слов, разделенных точками, например, lcc.gatech.edu или phys.cam.ac.uk. Дело в том, что в Сети принята иерархическая схема именования компьютеров, которая очень похожа на файловую систему UNIX1Это банальное сравнение, но уж тут ничего не поделаешь! Действительно, доменная система имен больше всего похожа на систему имен в файловой системе, а на генеалогическое древо, например, непохожа.. Самый верхний уровень пирамиды называется корневым доменом и обозначается символом точка ( .). Вся эта схема именуется системой доменных имен (DNS, Domain Name System).

Что такое домен

Домен – это совокупность компьютеров в сети. Их объединяет только имя домена, т.е. для того, чтобы некий компьютер оказался элементом домена, достаточно в описании домена указать, что он к нему относится и самому компьютеру об этом сказать. Компьютеры одного и того же домена могут быть удалены друг от друга географически, могут быть подключены к совершенно разным сетям и, возможно, даже не общаться между собой.

Домен может содержать отдельные компьютеры и поддомены. Поддомен – это домен, входящий в домен верхнего уровня. Любой домен, кроме корневого, является чьим-то поддоменом. Иерархия доменов легко прослеживается в их именах: домен lcc.gatech.edu, очевидно, является поддоменом домена gatech.edu.

Вся совокупность имен доменов называется "пространством имен доменов", и это название, должно быть, оценят математики. Чтобы структурировать пространство имен и облегчить именование новых компьютеров в сети, давно договорились, что все домены верхнего ("первого") уровня, т.е. те, что являются поддоменами корневого домена, делятся на две большие группы: национальные и общего пользования. Национальные домены (country code top level domains, ccTLD) распределены по странам: у каждой страны есть свой домен. К национальным доменам отнесены образованные по кодам стран в соответствии со стандартом ISO 3166-1, они обозначают страну или географический регион, например, RU, UA, AU. В списке национальных доменов есть несколько исключений, связанных с изменениями в политической карте мира с момента принятия ISO 3166-1. Так, до сих пор существует домен SU, который был зарегистрирован до распада Советского Союза, а Великобритания использует домен UK (от United Kingdom) вместо полагающегося ей GB (от Great Britain). Ряд доменов, таких как домен Восточного Тимора, Югославии, Сербии и Черногории также имеют иные имена, чем указано вышеупомянутым стандартом ISO. Всю историю именования ccTLD (по состоянию на март 2004 года, по крайней мере) можно прочесть по адресу http://www.eleves.ens.fr:8080/home/madore/misc/countries.html

Домены общего пользования (generic top level domains, gTLD) – это COM, NET, ORG, INFO, BIZ, MUSEUM, NAME, AERO и COOP. К ним относят домены ограниченного пользования, в которых могут зарегистрироваться только определенные организации, а именно: INT – международные организации, EDU – высших учебные заведений США (это не мешает, впрочем, существованию домена spb.edu, который зарегистрирован на Санкт-Петербургский Государственный Университет (бывший Ленинградский Государственный Университет), GOV – правительственные организации США, MIL – военные организации США, ARPA – бывший домен проекта ARPANET, из которого выросла сеть Интернет, сейчас он используется для обратных зон, см. ниже раздел "обратные зоны". Еще один домен – PRO зарезервирован для сообществ профессионалов, но пока его администрирование никто не осуществляет.

Координацией всего, что связано с системой доменных имен, занимается общественная организация ICANN (The Internet Corporation for Assigned Names and Numbers), зарегистрированная в Калифорнии в 1998 году. У ICANN имеются региональные регистраторы – RIPE NCC, которая координирует действия в европейско-азиатском регионе и Северной Африке, ARIN, которая работает с Северной и Центральной Америкой, APNIC, которая отвечает за страны Тихоокеанского региона, и LACNIC, координирующая работу в странах Латинской Америки и Карибского бассейна. Информацию о выполняемой ими работе можно найти на сайтах регистраторов и на сайте ICANN (www.icann.org).

В доменах верхнего (первого) уровня, таких, как RU, UK, FR и т.д., регистрируются домены второго уровня. В одних странах принято регистрировать домены общего пользования второго уровня (ac.uk для академического сообщества Великобритании и co.uk для коммерческих организаций там же), в других – нет. Обычно регистрацией доменов занимаются провайдеры Интернет, в том числе и в России.

Процедуры регистрации могут быть более или менее строгими в разных доменах, потому что эти процедуры определяет организация, ответственная за домен. Например, в домене FI (Финляндия) можно зарегистрировать домен только резиденту Финляндии или компании, имеющей государственную регистрацию в налоговой службе этой страны.

Организация, управляющая доменом, может делегировать право на управление частью этого домена другой организации или структурному подразделению. Например, если компания Ford Motor владеет доменом ford.com (а это так и есть!), то она могла бы делегировать право администрирования поддомена rus.ford.com своему российскому подразделению (а вот такого домена на самом деле нет – и не спрашивайте, почему...).

Тогда картинка бы выглядела так:

Делегирование поддомена rus.ford.com

Рис. 5.1. Делегирование поддомена rus.ford.com

Внешняя линия ограничивает пространство имен всего домена ford. com, а внутренняя – пространство имен rus.ford.com. То, что домен rus. ford.com "делегирован", означает, что право его администрирования, т.е. изменения записей о компьютерах, входящих в этот домен, передано другой организации (или подразделению). Так, администрирование домена france.ford.com, как видно из рисунка, осуществляется той же организацией, что и ford.com, а rus.ford.com администрируют другие люди. Делегирование дает возможность передать управление поддоменом не только организационно другой структуре, но и "переселить" информацию о поддомене на другой сервер имен, как будет показано ниже.

Что такое зона

"Зоной" в пространстве доменных имен называется совокупность компьютеров, управление доменными именами которых делегировано одной организации (подразделению). Так, в примере с доменом ford.com зоной ford.com называется совокупность всех компьютеров в домене ford.com и его поддоменах, за исключением поддомена rus.ford.com, так как зона rus.ford.com была делегирована другой организации (или подразделению). Зона ford.com на рисунке – это все, что находится между внутренней и внешней кривыми.

Каждый домен обслуживается по крайней мере двумя постоянно доступными серверами имен. Сервер имен хранит список компьютеров домена и определяет соответствие имен компьютеров их IP-адресам. Информация о домене также содержит сведения о маршрутизации почтовых сообщений, адресованных в этот домен. Физически сервер имен представляет собой процесс (демона), работающего в системе. Этот демон называется сервером имен (NS, name server).

Самый распространенный в Интернет сервер имен для UNIX-систем – это bind (Berkeley Internet Name Daemon). Вместе с Solaris 9 поставляется BIND 8. В пакет BIND, кроме программы named (это и есть собственно сервер имен), входят утилиты для получения информации от DNS и т.п.

Лучшей книгой про DNS уже много лет подряд остается книга "DNS и BIND" издательства O'Reilly Assosiates. Русский перевод издан в издательстве "Символ-плюс" (www.books.ru).

Как работает DNS

Представьте себе, что пользователь на компьютере с замысловатым именем 33-dialup.comstar.net пожелал посмотреть веб-сайт www.example.ru. Что произойдет после того, как он наберет этот адрес в строке веб-обозревателя?

Веб-обозреватель нуждается в IP-адресе веб-сервера, поэтому он запросит сервер имен о том, какой адрес у www.example.ru. Спрашивается, а какому серверу имен он задаст этот вопрос? Очевидно, тому, который указан в настройках компьютера 33-dialup.comstar.net. Там, скорее всего, указан адрес сервера имен провайдера, скажем, ns.comstar.net.

Получив этот запрос, сервер имен провайдера вначале поищет ответ в своем кэше, т.к. все DNS-запросы кэшируются. Если в кэше ответа нет, сервер имен посмотрит, нет ли ответа в его локальной базе. Его там не окажется, так как ns.comstar.net не отвечает за домен example.ru.

После этого сервер имен ns.comstar.net отправит запрос серверу имен корневого домена, как показано на рис. 5.2. Естественно, корневой сервер не имеет представления об адресе www.example.ru. Однако, ему известен адрес сервера имен зоны ru. Этот адрес и будет сообщен вопрошающему серверу имен.

Поиск адреса по имени сервером имен

увеличить изображение
Рис. 5.2. Поиск адреса по имени сервером имен

Сервер имен ns.comstar.net теперь отправит запрос серверу имен домена .ru, адрес которого он только что узнал. Тот сообщит ему адрес сервера имен example.ru, поскольку это самый близкий к www.example.ru из известных ему серверов имен.

Наконец, отправив запрос на сервер имен домена example.ru, сервер ns.comstar.net получит ответ на вопрос об IP-адресе компьютера www.example.ru, потому что этот компьютер находится в домене example.ru и его адрес известен серверу имен этого домена. Впрочем, если такого компьютера не существовало, то гарантированно достоверную информацию об этом все равно можно получить только от авторитетного сервера имен – то есть от сервера имен домена example.ru.

Теперь довольный сервер ns.comstar.net отправляет долгожданную информацию на компьютер 33-dialup.comstar.net.

Почему сервер имен ns.comstar.net отправлял так много запросов, чтобы удовлетворить клиента, а серверы имен других доменов ограничивались лишь ссылкой на известный им источник информации, пусть и самый близкий к авторитетному серверу имен из известных им? Может быть, потому, что сервер имен Comstar – самый вежливый в Сети? Оказывается, дело в том, что клиентская программа с 33-dialup.comstar.net прислала ему так называемый рекурсивный запрос, т.е. просьбу найти сам адрес, а не присылать ссылку на ближайший сервер имен. Так поступают все клиенты. Серверы имен обычно настроены так, чтобы самостоятельно выполнить поиск, поэтому ns.comstar.net отправлял другим серверам имен нерекурсивные запросы.

Возникает вопрос: а не слишком ли долго ждал ответа пользователь у компьютера 33-dialup.comstar.net? Как ни странно, недолго. Хитрость заключается в том, что DNS-запросы – это высокоприоритетный трафик, и маршрутизаторы в сети стараются передавать их побыстрее, вне очереди (конечно, всегда может организоваться "очередь тех, кто без очереди", но в ней все-таки стоять немного лучше). Во-вторых, все вышеупомянутые серверы имен связаны достаточно быстрыми каналами связи. В-третьих, высока вероятность, что на каком-то этапе ответ на запрос окажется в кэше промежуточного сервера имен и часть запросов окажется ненужной. Например, если в кэше сервера имен ns.comstar.net есть адрес сервера имен домена ru (а это весьма вероятно), то запрос к серверу имен корневого домена не потребуется.

Из этого примера ясно, что любой сервер имен обязан знать адреса серверов имен корневого домена. Этих серверов несколько в разных странах, и они регулярно обмениваются информацией, несмотря на то, что список доменов верхнего уровня и ответственных за них серверов имен меняется нечасто. Список серверов имен корневого домена всегда входит в дистрибутив ПО сервера имен.

Полностью определенное доменное имя

Каждый компьютер в сети имеет имя. Например, мой компьютер, на котором я пишу книгу, называется sunny. Это его собственное имя, но по такому имени его можно отыскать только в моем локальном домене, но не в Интернете. Для получения доступа к компьютерам в других доменах следует указывать их полные имена. Это похоже на то, как мы обращаемся к файлам. Если я хочу посмотреть файл text в текущем каталоге, я дам команду

cat text

Если же этот файл лежит в другом каталоге, например, /usr/share/, то я дам команду

cat /usr/share/ text

Аналогично, для обращения через ssh к моему компьютеру из другого домена надо сказать что-то вроде

ssh sunny.eu.spb.ru

Некоторым (весьма редким) программам важно указать, что это полное имя компьютера. Для этого надо в конце имени поставить точку – она показывает, что слева от нее стоит имя домена верхнего уровня, т.к. сама точка обозначает корневой домен. Такое полное имя называют полностью определенным доменным именем (FQDN – fully qualified domain name).

Почему же точек в имени несколько, спросите вы, – ведь корневой домен всего один? На самом деле корневой домен имеет невидимое имя, потому что это имя – пустая строка. Нет-нет, я не разыгрываю никого, это правда! И за самой правой точкой в полностью определенном имени действительно есть имя корневого домена – эта самая пустая строка. Не ожидали? Тем не менее, это так. А символ точки – это всего лишь разделитель имен доменов и поддоменов. В тех случаях, когда на корневой домен все-таки надо как-то сослаться, используется его обозначение – символ точка (.). Ну не обозначать же его просто пустой строкой – тогда его никто не увидит!

Настройка клиента DNS

Настройка клиента DNS чрезвычайно проста – следует лишь указать верные значения в /etc/nsswitch.conf и /etc/resolv.conf. В последнем файле надо указывать IP-адрес, а не имя сервера имен, ибо нельзя обратиться к серверу имен по имени – ведь это он должен преобразовывать имена в IP-адреса.

Вот выдержка из файла /etc/nsswitch.conf:

#
# /etc/nsswitch.dns:
#
# An example file that could be copied over to /etc/nsswitch.conf; it uses
# DNS for hosts lookups, otherwise it does not use any other naming service.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports.
passwd: files
group: files
# You must also set up the /etc/resolv.conf file for DNS name
# server lookup. See resolv.conf(4).
hosts: files dns
ipnodes: files
networks: files
protocols: files

Файл resolv.conf при этом выглядит так:

domain eu.spb.ru
nameserver 192.168.5.63
search eu.spb.ru
< Лекция 4 || Лекция 5: 1234 || Лекция 6 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.

Александр Гордеев
Александр Гордеев
Казахстан, Алматы, ТУРАН
Александр Даниленко
Александр Даниленко
Россия, Москва, 797, 1993