Вынесенный в заголовок вопрос отнюдь не праздный. Действительно, кому и зачем понадобился еще один адрес ПК в сети, если компьютер и так однозначно идентифицируется своим IP-адресом (во всяком случае, в теории)?
Для начала выясним, что такое DNS-адрес, а уже потом обсудим смежные вопросы. Система доменных имен. Именно так переводится Domain Name System.
Доменное имя – это то, что вы видите, набирая в браузере нечто вроде: ru.wikipedia.org. Домены образуют иерархию подчиненности, что отчетливо выражено в вышеприведенной форме записи: org – домен верхнего уровня по отношению к домену Wikipedia, который является вышестоящим относительно ru. При этом org называется доменом первого уровня, Wikipedia – второго, а ru – третьего.
Налицо иерархия, особенно удобная, когда необходимо каким-то образом упорядочить семантику имен интернет-ресурсов. Например, государственным организациям США рекомендуется хоститься в домене gov. Военным – в mil.
Образовательным – в домене edu и так далее. Примерно теми же самыми принципами руководствовались до недавнего времени и создатели отечественных сайтов. Однако с появлением русскоязычных доменов ситуация изменилась.
Вводя в адресную строку браузера имя сайта, мы не задумываемся над тем, каким образом осуществляется соответствие между этим именем и IР-сервера, на котором физически размещены страницы сайта.
За трансляцию имен в IP-адреса отвечает специальная распределенная база данных. Ее реальная структура соответствует доменной иерархии, которую мы только что обсудили.
Сервера, на которых хранятся отдельные части распределенной БД доменов, называются DNS-серверами. Каждый из них соответствует какой-нибудь одной зоне определенного уровня.
Поэтому для того, чтобы добраться до конкретного IР-адреса сайта, приходится пройтись по тем веткам иерархии серверов, которые отвечают за хранение сведений о доменах, перечисленных в полном имени сайта.
Существует программное обеспечение (программы-резольверы), упрощающие процедуру трансляции (пример такого ПО – DNS-сервер BIND).
Имейте в виду, что в определении DNS-сервера есть некоторая неоднозначность. Так называют и специализированное ПО для преобразования имени в IР, и хост, на котором оно запущено.
Немного истории
Ранний интернет не имел системы адресации подобной нынешней. Чтобы добраться до той или иной машины по ее символьному имени, на компьютерах пользователей велись обширные списки всех сетей, к которым был возможен доступ.
Перечень помещался в файл, который и сегодня еще можно обнаружить на диске. Это HOSTS. Чтобы пользоваться услугами сети и посещать сайты, нужно было скачать этот файл с сервера Стенфордского исследовательского центра. HOSTS может быть полезен и сегодня.
Если вы точно знаете IР машины, на которой размещен нужный ресурс, то можете внести запись о нем в этот файл. В таком случае скорость доступа к ресурсу окажется несколько выше, так как, несмотря на наличие механизма Domain Name System, первым опрашивается не DNS-сервер, а читается файл HOSTS. И если там имеется соответствующая запись, то обращение к механизму доменных имен не происходит.
С ростом числа абонентов глобальной сети росли и размеры таких файлов. В конечном счете, данная технология была признанная неудовлетворительной. Ей на смену пришла современная концепция иерархии DNS, разработанная Полом Мокапетрисом.
Существует и другая причина потребности в механизме, подобном DNS. Дело в том, что однозначное соответствие между IP-адресом, доменным именем и конкретной машиной давно уже стало анахронизмом.
Современный компьютер может иметь более одного доменного имени и несколько IР-адресов. Так что единственной строчкой в файле HOSTS отделаться никак не получится. Для этого нужны более продвинутые способы трансляции имен. Таким механизмом и стала технология DNS.
Как происходит трансляция?
Чтобы найти нужный IР, компьютер пользователя посылает запрос DSN-серверам, адреса которых указаны в настройках операционной системы. В процессе конфигурации сети в Windows предлагается настроить передачу запроса на два сервера – первичный и вторичный (вспомогательный) DNS. В других ОС применяется аналогичная схема. Далее возможна реализация двух вариантов.
Если сервер, которому был отправлен запрос, способен транслировать часть имени, то он именно это и делает, а для трансляции остальных фрагментов полного имени передает запрос на следующий в иерархии сервер.
Иногда бывает и наоборот. Сервер отправляет запрос корню иерархии DNS, обозначаемому точкой. Но ее в записи имени обычно пропускают.
Например, полностью «google.com» выглядело бы как «google.com.». Последняя лишняя точка и есть корень. Физически он представлен всего 13-ю DNS-серверами. Дальнейшая процедура трансляции выглядит как спуск по иерархии от корня к «листьям»: com => google… и так далее.
Для чего в настройках ОС указывают несколько адресов DNS? Это сделано из соображений отказоустойчивости. Если один из хостов, на котором запущено программное обеспечение DNS-сервера, выйдет из строя, откажется работать и перестанет отвечать на запросы, то задействуется другой. Наиболее популярные сервера верхнего уровня принадлежат google и «Яндексу», а также некоторым другим компаниям:
- Публичный сервис Гугла – 8.8.8.8.
- Сервис Яндекс.ДНС.
- SkyDNS.
- Публичный сервер Гугла – 8.8.8.4.
- UltrаDNS.
- Level 3.
- BIND.
И так далее. Правда, публичный сервис Google замечен в безосновательной блокировке некоторых ценных ресурсов.
Конфигурируем DNS в Windows
Чтобы узнать или изменить заданные по умолчанию адреса DNS-серверов в «Виндовс», необходимо проделать следующее:
- Задействуем комбинацию клавиш «Win» + «R» — это позволяет нам добраться до системного окошка «Выполнить».
- В поле его ввода вводим команду ncpa.cpl и жмем на «Enter».
- Откроется окно «Центра управления сетями».
- Слева в нем жмем на надпись «Изменение параметров адаптера».
- Появится список всех соединений компьютера с сетью.
- Щелкаем по нужному подключению правой кнопкой мыши и в контекстном меню выбираем пункт «Свойства».
- Откроется еще одно окошко с перечнем опций сети и сетевых протоколов.
- В этом списке выбираем строчку «Протокол Интернета версии 4 (TCP/IPv4)» и жмем на кнопку «Свойства».
- Появится окно следующего вида:
- В нижней части здесь можно прочитать или настроить параметры DNS.
То же самое делается при помощи консольной утилиты netsh, однако этот способ определить или исправить параметры DNS мы описывать не станем, а отошлем любознательных к соответствующим страничкам в интернете.
Аналогичные примеры можно привести и для других операционных систем – вроде Linux или мобильной ОС Android.
Какой DNS самый быстрый?
Это тоже вопрос не лишенный смысла, ведь путь, который проходит запрос пользователя на трансляцию имени, не всегда совпадает по длине. Кроме того, узлы, через которые этот запрос проходит, могут отличаться по своей производительности.
Можно ли протестировать DNS-сервера на скорость доступа к ресурсам? Да, это делается при помощи специальных программ, наподобие утилиты «DNS Benchmark» (скачать ее можно отсюда: https://www.grc.com/dns/benchmark.htm). Интерфейс ее представляет собой окно с несколькими вкладками:
Тестировать будем на «Nameservers», где в первой колонке списка указан адрес dns-сервера. Если интересующий вас сервер уже есть в перечне, то настраивать ничего не нужно — достаточно нажать на кнопку «Run Benchmark» и дождаться выдачи отчета в виде столбцовой диаграммы производительности:
Если сервера в списке нет, то добавляем его, воспользовавшись кнопкой «Add/Remove». Сам отчет нам, в общем-то, не нужен, так как программа сама отсортирует результаты в списке так, чтобы в начале стояли наиболее производительные серверы.
Остается лишь переназначить параметры по ОС умолчанию. Для этого нужно сделать первый в списке сервер основным, а следующий – альтернативным. Результаты тестирования будут неодинаковыми у пользователей, проживающих в разных регионах и подключенных к различным провайдерам.
В этом и заключается польза от этой программы. К слову сказать, многие провайдеры сами обслуживают вторичные и третичные DNS-серверы с целью ускорения трансляции.
