Библиотека решающих устройств

Когда мы говорим о "решающем устройстве", то мы не подразумеваем никакого специального применения. Поэтому достаточно обратиться к библиотеке решающих устройств — системе функций, которая может быть найдена в стандартной библиотеке C. Центральные программы — gethostbyname(2) и gethostbyaddr(2), которые ищут все IP адреса, принадлежащие хосту и наоборот. Они могут быть сконфигурированы при простом просмотре информации в хосте, при запросе ряда серверов или при использовании баз данных хоста NIS (Network Information Service). Другие применения, подобно smail, могут включать различные драйверы для любого из вышеперечисленного и требуют особой осторожности.

Файл конфигурации хоста

Центральный файл, который управляет вашей установкой - host.conf. Он сообщает решающему устройству, какой сервис использовать и в каком порядке. Опции в host.conf должны быть на отдельных строках. Области могут быть отделены пустым пространством (spaces или tabs). Знак (#) вводит комментарий, который простирается вплоть до следующей строки. Доступны следующие опции:

Типовой файл для vlager описывается ниже:

# /etc/host.conf
# We have named running, but no NIS (yet)
order   bind hosts
# Allow multiple addrs
multi   on
# Guard against spoof attempts
nospoof on
# Trim local domain (not really necessary)
trim    vbrew.com.

Параметры среды окружения решающего устройства

Установки из файла host.conf могут быть отменены, используя ряд параметров среды окружения. Они следующие:

RESOLV HOST CONF: Определяет файл, который будет считан вместо /etc/host.conf.

RESOLV SERV ORDER: Отменяет order опцию, данную в host.conf. Услуги, данные как хосты, bind и nis, отделены пробелом, запятой, двоеточием или точкой с запятой.

RESOLV SPOOF CHECK: Определяет критерии, принимаемые против spoofing. Эта установка полностью отключается опцией off. Значения предупреждают spoof проверку, но включают и выключают логирование соответственно. Значение * включает проверку spoof, но оставляет логирование, как определено в host.conf.

RESOLV MULTI: Эта среда окружения (может быть включена или выключена) может быть использована для отключения multi опции из host.conf.

RESOLV OVERRIDE TRIM DOMAINS: Эта среда окружения определяет список областей trim, который отключает те, что указаны в host.conf.

RESOLV ADD TRIM DOMAINS: Эта среда окружения определяет список областей trim, который добавляется к списку из host.conf.

Важно помнить, что изменение параметров среды окружения может повлиять на работу всей системы решения имен. Поэтому перед внесением любых изменений рекомендуется ознакомиться с документацией и консультироваться с экспертами в этой области.

Конфигурирование сервера поиска: resolv.conf

Для конфигурирования библиотеки решающего устройства и использования BIND для поиска хостов, необходимо указать имя сервера. Для этого существует специальный файл - resolv.conf. Если этот файл отсутствует или пуст, решающее устройство будет использовать имя сервера вашего локального хоста. Если вы запускаете сервер на вашем локальном хосте, имя сервера следует установить отдельно. Более подробная информация будет представлена в следующем разделе. В локальной сети рекомендуется использовать существующее имя сервера.

Главная опция в resolv.conf — nameserver, которая указывает IP-адрес используемого сервера. Если определено несколько серверов путем указания опции nameserver несколько раз, они будут проверяться по порядку. Поэтому наиболее надежный сервер следует помещать первым. Всегда можно поддерживать не более трех серверов. Без указания опции nameserver, решающее устройство попытается соединиться с сервером на локальном хосте.

Еще две опции, domain и search, относятся к областям по умолчанию, которые используются, если BIND не может разрешить запрос с первой попытки. Опция search определяет список названий областей для проверки. Список разделен пробелами или табуляцией.

В отсутствие опции search, список по умолчанию создается из локального имени области, используя название области и все родительские области до корневой. Локальное название области может быть указано с использованием директивы области; если оно не указано, решающее устройство получит его через системный вызов getdomainname(2).

В качестве примера рассмотрим файл resolv.conf для Virtual Brewery:

# /etc/resolv.conf
# Our domain
domain vbrew.com

# We use vlager as a central nameserver:
nameserver 191.72.1.1

При попытке определить имя vale, решающее устройство искало бы его, а при неудаче проверило бы vale.vbrew.com и vale.com.

Ошибкоустойчивость решающего устройства

Если вы запускаете LAN внутри большей сети, вы непременно должны использовать центральные сервера, если они доступны. Преимущество этого состоит в том, что они разработают богатые кэши, так как все запросы направлены к ним. Эта схема имеет недостаток: когда сгорел базовый кабель в нашем университете при пожаре, стало невозможно работать на LAN нашего отдела, потому что решающее устройство не могло достичь какого-либо из серверов. Не было логина на X-terminals, не было печати на принтерах и т.д.

Хотя это и не гоже для университетского городка, опускаться до пожаров, каждый обязан соблюдать технику безопасности, чтобы избежать подобных случаев. Один из способов - установить локальный сервер, который определяет hostnames из вашей локальной области и делает все запросы для других hostnames к главным серверам. Конечно, это применимо только тогда, когда вы используете вашу собственную область.

В качестве альтернативы, вы можете сохранить таблицу сохраненных хостов вашей области или LAN в /etc/hosts. В /etc/host.conf вы можете включить "order bind hosts" для того, чтобы решающее устройство вернулось бы к хост-файлу, если центральный сервер ослабел или вышел из строя.