Конфигурационный файл сервера протокола загрузки
/etc/bootptab
ЗОСРВ «Нейтрино»
Файл /etc/bootptab
используется сервисом bootpd.
Формат конфигурационного файла похож на формат файла termcap, в котором для представления параметров хоста используются двухсимвольные теги с учетом регистра. Эти объявления параметров разделяются двоеточием (:
). Общий формат имеет следующий вид:
имя_хоста:tag=значение... :tag=значение... :tag=значение...
где имя_хоста – фактическое имя клиента bootp, а tag – двухсимвольный тег. После большинства тегов должен следовать знак равенства (=
) и значение, как показано в примере выше. Некоторые теги используются в булевой форме без значения (например, :tag:
). В настоящее время доступны к использованию следующие теги:
Также существует групповой тег вида Tn, где n – номер тега поля вендора по RFC 1048. Это позволит воспользоваться преимуществами будущих расширений RFC 1048 без необходимости предварительного внесения изменения в утилиту bootpd. Групповые данные могут быть представлены либо в виде потока шестнадцатеричных чисел, либо в виде заключенной в кавычки строки ASCII-символов. Длина групповых данных определяется автоматически и вставляется в соответствующее поле (поля) ответа протокола bootp в стиле RFC 1048.
Все IP-адреса указываются в стандартной записи с точками в качестве разделителей, и в них могут использоваться десятичные, восьмеричные или шестнадцатеричные числа (восьмеричные числа начинаются с 0
, шестнадцатеричные – с пары символов 0x
или 0X
).
Имя хоста, домашний каталог и загрузочный файл, указанные в качестве аргументов, представляют собой ASCII-строки, которые могут заключаться в двойные кавычки. Клиентский запрос и значения символов hd и bf используются сервером для заполнения поля bootfile в ответном пакете bootp.
Если клиентом указан абсолютный путь, и этот файл существует на серверном компьютере, то это путевое имя возвращается в пакете ответа. Если найти файл невозможно, то запрос отклоняется и ответ не отправляется. Если клиентом указан относительный путь, то абсолютный путь формируется путем присоединения в начало значения тега hd, после чего проверяется существование файла. Если тег hd не представлен в конфигурационном файле или не может быть найден результирующий загрузочный файл, то запрос отклоняется.
Клиенты, на которых указываются нулевые загрузочные файлы, всегда получают ответ от сервера. Точный ответ зависит от тегов hd и bf. Если тег bf указывает на абсолютный путь, и файл существует, то этот путь возвращается в пакете ответа. Если оба тега hd и bf вместе указывают на доступный файл, то в ответе возвращается это имя файла. Если определить полное имя файла невозможно или файл не существует, то в ответе передается обнуленное поле bootfile.
Во всех этих случаях для файла должен быть установлен бит общего доступа на чтение, поскольку это требуется для утилиты tftpd. |
Для определенных тегов (например, при указании серверов имен) многие записи о хостах часто разделяют общие значения. Вместо повторного указания этих тегов можно использовать механизм тега tc (table continuation, продолжение таблицы), когда создается список полной спецификации для одной записи хоста, который может разделяться другими хостами. В шаблоне записи часто упоминается фиктивный хост, который фактически не существует и никогда не отправляет запросы по протоколу bootp. Эта особенность похожа на функцию tc библиотеки termcap для похожих терминалов.
Следует отметить, что тег tc в утилите bootpd может появляться в любом месте записи хоста, в отличие от библиотеки termcap, где требуется, чтобы этот тег был последним. Информация, явно указанная для хоста, всегда заменяет информацию, передаваемую в теге tc, вне зависимости от его расположения внутри записи. Значением тега tc может быть имя хоста или IP-адрес записи любого хоста, ранее указанного в конфигурационном файле.
Иногда необходимо удалить конкретный тег после его получения с помощью tc. Это можно выполнить с помощью тега-конструктора @
, который удаляет результат применения тега, как в библиотеке termcap.
Например, для полной отмены спецификации сервера имен IEN-116, в соответствующее место записи конфигурационного файла нужно добавить следующее:
:ns@:
После удаления с использованием символа @
тег можно снова установить с помощью механизма tc.
В конфигурационном файле игнорируются пустые строки и строки, начинающиеся со знака фунта (#
). Записи хоста разделяются символами новой строки. Одна запись хоста может состоять из нескольких строк, если строки оканчиваются символом обратной косой черты (\
). Длина строки может превышать 80 символов.
Теги могут быть указаны в любом порядке со следующими исключениями:
# Sample bootptab file default1:\ :hd=/usr/boot:bf=null:\ :ds=128.2.35.50 128.2.13.21:\ :ns=0x80020b4d 0x80020ffd:\ :ts=0x80020b4d 0x80020ffd:\ :sm=255.255.0.0:gw=0x8002fe24:\ :hn:vm=auto:to=-18000:\ :T37=0x12345927AD3BCF:T99="Special ASCII string": carnegie:ht=6:ha=7FF8100000AF:ip=128.2.11.1:tc=default1: baldwin:ht=1:ha=0800200159C3:ip=128.2.11.10:tc=default1: wylie:ht=1:ha=00DD00CADF00:ip=128.2.11.100:tc=default1: arnold:ht=1:ha=0800200102AD:ip=128.2.11.102:tc=default1: bairdford:ht=1:ha=08002B02A2F9:ip=128.2.11.103:tc=default1: bakerstown:ht=1:ha=08002B0287C8:ip=128.2.11.104:tc=default1: # Special domain name server for next host butlerjct:ht=1:ha=08002001560D:ip=128.2.11.108:ds=128.2.13.42:tc=default1: gastonville:ht=6:ha=7FFF81000A47:ip=128.2.11.115:tc=default1: hahntown:ht=6:ha=7FFF81000434:ip=128.2.11.117:tc=default1: hickman:ht=6:ha=7FFF810001BA:ip=128.2.11.118:tc=default1: lowber:ht=1:ha=00DD00CAF000:ip=128.2.11.121:tc=default1: mtoliver:ht=1:ha=00DD00FE1600:ip=128.2.11.122:tc=default1:
Сервис bootpd выполняет поиск подходящих для использования номеров портов в /etc/services
. Извлекаются две записи:
При невозможности определения номеров портов этим способом, для сервера подставляется номер порта 67, а для клиента – номер 68.
В качестве расширения ЗОСРВ «Нейтрино» аргумент тега bf может начинаться с символа (|
). В этом случае следующая команда рассматривается как запускаемая для получения загрузочного образа:
bf=|cd /boot; mkifs build/node1:
При использовании этого расширения утилиту tftpd не следует запускать от имени пользователя root
. Одним из вариантов является создание пользователя tftp и запуск утилиты tftpd от имени этого пользователя. Также можно создать пользователя ftp и работать от его имени, но в этом случае становится возможным анонимный доступ к компьютеру по протоколу ftp. Для получения информации о процедуре изменения пользователя, от имени которого запускается утилита tftpd, см. /etc/inetd.conf
.
Агент, действующий как сторона_агент, разрешает менеджеру, действующему как сторона_менеджер, выполнять операции GET для группы объектов данных, входящих в контекст контекст_агента.
Базовые подсистемы ЗОСРВ «Нейтрино»
Предыдущий раздел: Конфигурационные файлы