Настройка DNS
После активизации интерфейсов и установки маршрутов компьютер может обмениваться пакетами как с компьютерами локальной сети, так и с любыми другими компьютерами, с которыми он соединен системой шлюзов. Для указания адреса назначения пакета используются IP-адреса. Такая адресация естественна для маршрутизаторов, но чрезвычайно неудобна для пользователей. Преобразование символьных имен (например, www.awl.com) в IP-адреса, используемые при маршрутизации пакетов, осуществляет система доменных имен (DNS — Domain Name System). Кроме того, DNS может также осуществлять обратное преобразование.
DNS поддерживает глобальную распределенную базу данных, для работы с которой используется большое количество серверов. Для того чтобы пользоваться этой базой, компьютер должен знать адрес лишь одного сервера DNS. Большинство организаций и провайдеров Internet устанавливают у себя один или несколько серверов. Чтобы узнать адрес такого сервера, надо обратиться к администратору сети. Получив эти сведения, надо включить их в файл /etc/resolv.conf. В данном файле может содержаться до трех строк, начинающихся с ключевого слова nameserver, за которым следует IP-адрес сервера DNS. В этом файле также указывается домен по умолчанию (для этого используется ключевое слово domain) и произвольное число доменов, в которых выполняется поиск имени. Поиск проводится в том случае, если указано лишь имя компьютера, а имя домена пропущено (например, если вместо mail.threeroomco.com пользователь задал имя mail). Пример файла /etc/resolv.conf, содержащего все три типа записей, приведен в листинге 2.1.
Листинг 2.1. Пример файла /etc/resolv.conf
domain threeroomco.com
search tworoomco.comfourroomco.com
nameserver 10.98.17.34
nameserver 172.20.13.109
Несмотря на то что запись search позволяет сэкономить время при вводе доменного имени, желательно воздержаться от ее использования. Предположим, что в обоих доменах, указанных в листинге 2.1 (tworoomco.com и fourroomco.com), содержится компьютер с именем www. Если, работая на компьютере, на котором находится приведенный выше файл /etc/resolv.conf, пользователь введет имя www, он может получить документ, содержащийся на сервере одного домена, и считать при этом, что он работает с другим доменом. Кроме того, при поиске затрачивается время, в течение которого обработка других запросов на преобразование адресов замедляется. Более того, даже если вы зададите полное имя, система сначала попытается найти в доменах, определенных посредством записей domain и search. Например, если на компьютере, на котором находится рассматриваемый файл /etc/resolv.conf, вы зададите имя www.awl.com, то сначала будет предпринята попытка найти имена www.awl.com.threeroomco.com, www.awl.com.tworoomco.com и www.awl.com.fourroomco.com и лишь затем начнется обработка имени www.awl.com. Успехом увенчается лишь попытка преобразования имени, в которое после домена com будет стоять точка.
После того как вы отредактируете файл /etc/resolv.conf в соответствии со своими потребностями, можете начинать работу в сети. Для активизации внесенных изменений не требуются никакие дополнительные команды. Linux автоматически начнет работать с указанным сервером имен и выполнять поиск в указанных доменах.
Если вы хотите, чтобы ваш компьютер под управлением Linux выполнял функции сервера DNS, вам надо выполнить специальные настройки. Сделать это поможет материал, изложенный в главе 18. В главе 18 приводятся сведения об особенностях работы сервера имен. В зависимости от конфигурации, к этому серверу могут обращаться как компьютеры, находящиеся в той же локальной сети, так и другие узлы Internet.
Определение имени узла
При использовании многих протоколов семейства TCP/IP необходимо, чтобы к компьютеру можно было обращаться по имени. Для того чтобы упростить настройку отдельных программ, в Linux содержится специальная утилита hostname, позволяющая определить имя узла. Если вызвать эту утилиту без параметров, она выведет текущее имя узла. Если за именем утилиты следует имя узла (например, hostname larch.threeroomco.com), это имя присваивается узлу. Имя узла можно хранить в файле и с помощью опции -f или -file передавать hostname имя того файла, например hostname -f /etc/HOSTNAME. В большинстве дистрибутивных пакетов предусмотрена автоматическая установка имени узла при загрузке системы, но имя узла в различных системах хранится в разных файлах. Это может быть файл /etc/hostname, /etc/HOSTNAME или файл, указанный в составе дополнительного конфигурационного файла (см. табл. 2.1).
Имя узла должно устанавливаться единожды, но это не всегда возможно. Некоторые прикладные программы, в частности почтовые клиенты и программы просмотра сообщений Usenet, позволяют пользователям переопределять имена, используемые по умолчанию. Задать имя узла можно также в файле /etc/hosts. Этот файл используется при работе системы преобразования имен, альтернативной DNS. В файле /etc/hosts содержатся строки, начинающиеся с IP-адреса, за которым следует набор имен узла. Чаще всего первым после IP-адреса указывается полностью определенное доменное имя, в его состав входит имя компьютера и домен, которому он принадлежит, например larch.threeroomco.com. За полностью определенным доменным именем следуют так называемые псевдонимы. Обычно они представляют собой сокращенную форму имени, например larch. Если ваш компьютер корректно настроен для работы с сервером DNS и если на этом сервере содержатся записи для вашего компьютера, нет необходимости определять имя узла в файле /etc/hosts. Если сервер DNS работает ненадежно или если в результате некорректной работы маршрутизаторов сервер DNS периодически становится недоступным, записи в /etc/hosts повысят надежность работы вашего компьютера в сети. Кроме того, вы, возможно, захотите поставить в соответствие адресу 127.0.0.1 имена localhost.localdomain и localhost. Примеры записей в файле /etc/hosts приведены ниже.
10.92.68.1 larch.threeroomco.com larch
127.0.0.1 localhost.localdomain localhost
Если в процессе загрузки системы возникает пауза в несколько секунд и даже несколько минут (в особенности такая пауза бывает заметной при запуске программы sendmail), это может означать, что при соединении с сервером DNS возникают проблемы и вам желательно определить имя узла в файле /etc/hosts.
Если компьютер содержит несколько сетевых интерфейсов, вы можете задать одно имя узла посредством команды hostname или определить в файле /etc/hosts отдельное имя для каждого интерфейса. (Сервер DNS также позволяет задать для одного компьютера несколько имен.)
Настраивая небольшую сеть, вы можете указать имена всех компьютеров в файлах /etc/hosts; при этом необходимость в использовании сервера DNS отпадает. Однако при увеличении размеров сети редактировать файлы /etc/hosts становится все труднее. В этом случае целесообразно перейти к использованию централизованного сервера DNS.
Сохранение внесенных изменений