Утилита
конфигурирования хоста TCP/IP
Примечание. Эту утилиту может
выполнить только пользователь root.
Синтаксис:
dhcp.client
[-abdmnr]
[-h имя_хоста] [-I число]
[-i интерфейс]
[-P порт] [-p порт] [-s хост]
[-T секуны] [-t число] [-u] &
Поддерживаемые платформы:
Neutrino
Опции:
-a
Применить
назначенный IP-адрес как псевдоним вместо перезаписи текущей
конфигурации.
-b
Запросить
у DHCP-сервера передачу ответных пакетов только в адрес
соответствующего клиента (по умолчанию запрашивается
широковещательная передача).
-d
Записывать
отладочную информацию в системный журнал.
-h
имя_хоста
Имя
хоста клиента (по умолчанию подставляется сервером (при условии
наличия имени хоста)).
-I
число
Число
попыток опроса при ожидании доступности интерфейса (по умолчанию
равно 5). Опрос выполняется каждые 2 секунды.
Например,
утилита dhcp.client при указании этой опции будет ожидать
доступности того интерфейса, который она должна использовать.
Этот вариант оптимален в случае, если в среде загрузки нет
точной информации о времени запуска драйвера и его регистрации
в стеке TCP/IP. Если интерфейс не найден, работа утилиты
завершается со статусом завершения 2.
-i
интерфейс
Имя
конфигурируемого интерфейса (например, en0, en1). Значение по
умолчанию – первый из обнаруженных интерфейсов.
-m
Записывать
данные сервера доменов и сервера доменных имен вместо файла
/etc/resolv.conf (по умолчанию) в значения _CS_DOMAIN и
_CS_RESOLVE памяти переменных конфигурации (см. раздел confstr()
в руководстве по библиотекам Neutrino Library Reference):
_CS_DOMAIN
Имя
домена.
_CS_RESOLVE
Сервер
имен.
Если
указаны одновременно ключи -m и -n, то добавляется только домен,
серверы имен при этом не добавляются.
-n
Не
добавлять серверы имен, сообщенные службой DHCP, в файл
/etc/resolv.conf или значение _CS_RESOLVE. Если при этом будет
указан ключ -m, то добавляется только домен, серверы имен при
этом не добавляются. Если ключ -m не указан, домен и серверы
имен не добавляются.
-P
порт
Порт
сервера DHCP (по умолчанию порт согласно значению dhcp или порт
67).
-p
порт
Порт
клиента DHCP (по умолчанию порт согласно значению dhcpc или порт
68).
-s
хост
Принимать
пакеты только от этого сервера; ответы от других серверов при
этом игнорируются.
-T
секунды
Время
в секундах, в течение которого следует ожидать завершения
согласования клиента с сервером (ACK-сообщение от сервера).
Этот ключ применяется при каждом возврате клиента в состояние
инициализации (DISCOVER). В случае таймаута работа утилиты
dhcp.client прекращается со статусом завершения 3.
-t
число
Попытка
установить соединение с сервером определенное число раз перед
отменой и завершением работы (по умолчанию – не ограничено,
т.е. попытки не прекращаются). Длительность каждой попытки
равна 1 минуте.
Эта
опция обычно используется в сочетании с опцией -u, т.е.
утилита dhcp.client завершает работу по таймауту после
определенного количества попыток.
-u
Не
переводить утилиту dhcp.client в фоновый режим до успешного
завершения конфигурирования интерфейса.
Эта
опция полезна для запуска dhcp.client. Процесс не переводится
в фоновый режим до тех пор, пока не будет установлена связь с
сервером и применена конфигурация TCP/IP. Если сервер не
отвечает, работа завершается со статусом завершения 3.
Описание:
Утилита
dhcp.client получает параметры конфигурации TCP/IP от сервера
DHCP (Dynamic Host Configuration Protocol, протокол
динамического конфигурирования хоста) в динамическом режиме и
выполняет автоматическое конфигурирование хоста TCP/IP.
Благодаря этому не требуется указывать IP-адрес и другие
параметры конфигурации, а также запускать утилиты
конфигурирования.
Примечание. Для этой
утилиты в правах доступа пользователя необходимо установить
бит setuid ("set user ID", установить идентификатор
пользователя). В случае использования утилит mkefs, mketfs или
mkifs на хосте Windows для включения этой утилиты в образ
необходимо задать атрибут perms для явного определения
полномочий, а также атрибуты uid и gid для корректной
настройки принадлежности.
При
прекращении работы утилита dhcp.client возвращает серверу
адрес DHCP, предоставленный этим сервером. Если работа клиента
прекращается по сигналу SIGPWR, то возврат адреса не
производится; аренда этого адреса завершается по таймауту или
продолжается после перезапуска клиента (в зависимости от
политик сервера).
Примечание. Перед
запуском утилиты dhcp.client необходимо запустить процесс
io-pkt*.
Минимальный
набор команд для выполнения в QNX Neutrino:
io-pkt-v4
-dne2000
-ptcpip
if_up
-p
enx
dhcp.client
&
if_up
enx
или:
io-pkt-v4
-dne2000
-ptcpip
dhcp.client
-Ix
-u
Если
утилита dhcp.client должна назначать IP-адрес в качестве
псевдонима (а не заменять текущий назначенный IP-адрес),
необходимо указать опцию -a. Эта опция удобна для присвоения
одному интерфейсу нескольких IP-адресов. В частности, опцию -a
следует указать в том случае, если на одном и том же
интерфейсе необходимо использовать утилиту dhcp.client и
утилиту AutoIP (lsm-autoip.so).
По
умолчанию утилита dhcp.client выполняет поиск не
сконфигурированного интерфейса для применения соответствующей
службы. В случае применения AutoIP все интерфейсы будут
заведомо сконфигурированными, поэтому работа утилиты
dhcp.client завершится. В случае, если утилита dhcp.client
применяется к интерфейсу, уже имеющему IP-адрес, следует
указать опцию -i (в сочетании с опцией -a); тогда этому
интерфейсу одновременно будут присвоены IP-адреса DHCP и
AutoIP.
Данная
утилита получает от сервера DHCP и применяет следующую
информацию:
*
Широковещательный адрес (для малого стека не
устанавливается).
*
Домен
*
Шлюз (маршрут по умолчанию)
*
Имя хоста
*
IP-адрес
*
Сервер доменных имен
*
Сетевая маска
/etc/dhcp/dhcp-up
Если
этот файл существует, он запускается после установления
соединения с сервером DHCP и применения вышеописанных
конфигурационных опций. Этот файл может представлять собой
двоичную программу или сценарий, и должен быть исполняемым
(см. chmod). Если файл является сценарием, то в его первой
строке должен быть указан интерпретатор команд. Пример.
#!/bin/sh
Переменные
среды, содержащие полученную от сервера конфигурацию,
передаются этому файлу. При запуске этого файла им наследуется
не вся среда. Например, переменная среды PATH оказывается
недоступной. Для определения доступных переменных можно
создать сценарий dhcp-up, например, следующего вида:
#!/bin/sh
env
> /tmp/config
Определения среды:
INTERFACE
Сконфигурированный
интерфейс (например, INTERFACE=en0).
IPADDRESS
IP-адрес
клиента, полученный от сервера (например, IPADDRESS=10.0.0.1).
NETMASK
Сетевая
маска клиента, полученная от сервера (например,
NETMASK=255.0.0.0).
HOSTNAME
Имя
хоста клиента (например, HOSTNAME=node1).
BROADCAST
Широковещательный
адрес клиента, полученный от сервера (например,
BROADCAST=10.255.255.255).
GATEWAY
Шлюз,
который должен использовать клиент (например, GATEWAY=10.0.0.2).
SERVER
Идентификатор
(IP-адрес) сервера DHCP (например, SERVER=10.0.0.3).
NAMESERVER1,
NAMESERVER2
Сервер
имен, который должен использовать клиент (например,
NAMESERVER1=10.0.0.4).
LEASEOBTAINED
Время
начала аренды (например, LEASEOBTAINED=Mon Oct 30 16:46:10
2000).
LEASEEXPIRES
Время
окончания аренды (например, LEASEEXPIRES=Mon Oct 31 16:46:10
2000).
RELAYAGENT
Агент
ретрансляции DHCP обеспечивает пересылку пакетов между
утилитой dhcp.client и сервером DHCP, если они находятся в
разных сетях. Переменная представляет собой IP-адрес агента
ретрансляции, если он существует.
SERVERNAME
Имя
хоста сервера DHCP.
DOMAIN
Домен,
предоставленный сервером DHCP, для добавления в файл
/etc/resolv.conf или в CS_DOMAIN (конфигурационная строка).
SIADDR
Следующий
сервер для использования при начальной настройке. Если было
указано имя файла (FILENAME), это значение будет получено от
сервера.
Ниже
перечислены опции, которые доступны для использования, но не
применяются процессом dhcp.client:
FILENAME
Имя
файла в ответе сервера (например, FILENAME=/bootimg).
Любые
другие опции определяются как переменные среды OPTIONx, где x
– номер параметра. Если опция известна, утилита dhcp.client
пытается привести ее в читабельный вид. Если опция неизвестна,
утилита dhcp.client отображает ее по октетам в
шестнадцатеричном виде (например, OPTION200= F1 AA 56 42).
В настоящее время утилите dhcp.client известны опции
от 1 до 61.
/etc/dhcp/dhcp-options
В этом файле определяются опции
DHCP, которые требуется получать от сервера DHCP. Этот файл
необходим только в том случае, если в файл /etc/dhcp/dhcp-up
добавляется пользовательская опция DHCP. Если в сценарий
dhcp-up добавляется код обработки какой-либо опции, этот
параметр необходимо также добавить в файл
/etc/dhcp/dhcp-options. Опции, перечисленные в файле
dhcp-options, передаются серверу в дополнение к следующим:
*
1 – маска подсети
*
6 – серверы доменных имен
*
12 – имя хоста
*
15 – имя домена
*
3 – шлюз
*
28 – широковещательный адрес
которые
включают в себя сам процесс dhcp.client.
Пример
файла dhcp-options:
200
150
#Комментарий
90
Каждая
опция указывается в отдельной строке в порядке приоритета.
Комментарии также должны располагаться в отдельных строках;
максимальная длина комментария равна 80 символам.
Файлы:
Для
работы утилиты dhcp.client требуется разделяемая библиотека
libsocket.so.
Статус завершения:
0
Успешно.
1
Возникла
ошибка.
2
Интерфейс
не найден.
3
Сервер
не отвечает.
Ошибки:
Ошибки,
возникающие в процессе конфигурирования, сохраняются в системном
журнале.