Конфигурационный
файл
суперсервера
(UNIX)
Имя
/etc/inetd.conf
Описание:
Файл
/etc/inetd.conf
является конфигурационным файлом по
умолчанию для суперсервера inetd.
В
поставляемой версии этого файла
описываются все поддерживаемые в
настоящее время серверы QNX Neutrino TCP/IP и
некоторые нестандартные серверы pidin.
Изменять
этот файл следует только при
необходимости добавления или удаления
описаний серверов.
Поля
в
строке
разделяются пробелами или
символами табуляции. Комментарии
обозначаются символом решетки (#) в
начале строки.
Поля
конфигурационного
файла:
[адрес:]имя_службы
| имя_службы/версия
тип_сокета
протокол[,sndbuf=размер][,rcvbuf=размер]
wait|nowait[:макс]
пользователь[:группа]
серверная_программа
аргументы_серверной_программы
Описание
полей:
адрес
Адрес
локального
хоста, используемого inetd
при прослушивании службы. (Не применяется
для служб на базе RPC.) Одна звездочка (*)
указывает,
что прослушивание осуществляется
по всем локальным адресам (INADDR_ANY).
Если
строка
содержит только спецификатор
адреса и двоеточие (значение в поле
имя_службы не указано), то этот
спецификатор адреса применяется для
всех последующих строк до появления
строки с явным спецификатором адреса
или до конца файла.
имя_службы
Имя
службы
из файла /etc/services
или имя службы RPC из файла /etc/rpc.
Имена
внутренних
служб (см. аргументы_серверной_программы)
должны
быть представлены официальными
именами служб (т.е. первой записью в
каталоге /etc/services).
версия
Номер
версии
RPC. Может быть выражен одним
числовым аргументом или диапазоном
версий. Диапазон ограничен версиями с
низким и высоким номерами (например,
rusers/1-3).
тип_сокета
stream,
dgram
или raw
в зависимости от типа сокета: потоковый,
датаграммный или сокет прямого доступа.
протокол
Протокол,
например,
tcp
или udp
из файла /etc/protocols.
Для
явного
определения версии протокола
IP используются протоколы tcp4
(для IPv4) или udp6
(для IPv6). Протоколы tcp
или udp
используются по умолчанию для текущей
версии IP (в настоящее время IPv4).
Для
служб
на базе RPC к протоколу необходимо
добавлять префикс rpc/
(например, rpc/udp).
rcvbuf=размер
sndbuf=размер
Размер
буфера
отправки или приёма для ожидающего
сокета. Его целесообразно определить
для протокола TCP, поскольку коэффициент
масштабирования окна на основе размера
буфера сокета по приёму объявляется
при установлении соединения. Поэтому
в ожидающем сокете необходимо установить
размер буфера сокета для сервера. В
некоторых ситуациях эффективность
работы TCP можно повысить путем увеличения
размера буфера сокета. Размеры буфера
сокета определяются путем добавления
их значений в спецификацию протокола
следующим образом:
tcp,rcvbuf=16384
tcp,sndbuf=64k
tcp,rcvbuf=64k,sndbuf=1m
Для
определения
или изменения значения
используются опции k
(килобайты) или m
(мегабайты). Размеры буфера сокета можно
указать для всех служб и протоколов за
исключением служб мультиплексора служб
порта TCP (TCPMUX).
wait|nowait
Указание
inetd
необходимости ожидания ответа серверной
программы или продолжения обработки
соединений в сокете. Для сокетов, не
являющихся датаграммными, здесь должна
быть определена запись nowait.
Если
сервер датаграмм подключается к
удаленной стороне, сокет освобождается
с целью получения новых сообщений в
сокете посредством inetd,
то
сервер считается многопотоковым
и необходимо использовать запись nowait.
Если
для
сервера датаграмм, после обработки
всех входящих датаграмм в сокете истекает
лимит времени, то он относится к
однопотоковым и необходимо использовать
запись wait.
Сервис
tftpd
является исключением; это сервер
датаграмм, который устанавливает
псевдосоединения. Во избежание состояния
гонки для него следует указать значение
wait.
Сервер
считывает первый пакет, создает
новый сокет, затем порождает копию
процесса и завершает работу, после чего
утилита inetd
проверяет наличие новых запросов служб
на порождение новых серверов.
Для
потоковых
серверов, как правило,
устанавливается значение nowait,
однако
если один серверный процесс
обрабатывает несколько соединений, то
возможно использование значения wait.
Основной
сокет передается на сервер
как fd
0.
После
этого сервер должен принять
входящее соединение. В итоге лимит
времени истекает, и сервер завершает
работу при отсутствии активных соединений.
Сервер inetd
продолжает прослушивание соединений
в основном сокете. Сервер identd
обычно является однопоточным, и для
него установлено значение wait.
макс
Максимальное
количество
экземпляров сервера,
порождаемых inetd
в пределах интервала в 60 секунд. Если
значение не указано, то используется
значение макс
по умолчанию – 40 экземпляров сервера.
пользователь
Имя
пользователя,
от имени которого запущен
сервер. Это позволяет устанавливать
серверам менее широкие полномочия, чем
root.
группа
Разрешить
серверам
работать с идентификатором
группы, отличным от указанного в файле
паролей (первичным идентификатором).
Если группа определена, а пользователь
не является пользователем root,
то
устанавливаются дополнительные
группы, связанные с этим пользователем.
Имя
группы
определяется путем добавления
двоеточия или точки (допускается в целях
обеспечения обратной совместимости) к
имени пользователя, после чего следует
имя группы.
серверная_программа
Путевое
имя
программы, выполняемой inetd
при обнаружении запроса в сокете inetd.
Если
требуемая служба предоставляется
внутренне посредством inetd
(например, см. echo
на странице описания утилиты inetd),
в
этом поле будет содержаться слово
internal.
аргументы_серверной_программы
Любые
аргументы,
передаваемые серверной
программе. Имя программы передается в
виде argv[0].
Если
для поля серверная_программа
установлен атрибут internal,
его
можно оставить незаполненным.
Настройка
политики
IPsec
В
строке
специального комментария можно
указать параметры настройки политики
IPsec для каждого сокета. Строка, начинающаяся
со специального комментария "#@",
указывает
спецификатор политики, а
содержимое этой строки обрабатывается
как строка политики IPsec.
Допустимые
параметры
настройки
политики для
/etc/inetd.conf:
направление
bypass
направление
entrust
направление
ipsec запрос ...
Примечание.
Подробное
описание аргументов приведено
в разделе "Настройка политики" на
странице протоколов IPsec.
Можно
определить
несколько строк политики
IPsec; в качестве разделителей используются
точки с запятой. В случае обнаружения
конфликтующих строк на одной строке
приоритет имеет последняя строка.
Если
спецификатор
политики определен с
использованием #@,
он
относится ко всем последующим строкам
в конфигурационном файле /etc/inetd.conf.
Сброс
политики IPsec осуществляется с
помощью вставки строки комментария без
строки политики (т.е. строки комментария,
содержащей только #@).
При
появлении
в файле /etc/inetd.conf
недействительной строки политики IPsec
inetd
посылает сообщения об ошибке в syslog()
и завершает свою работу.
Поведение
TCP/UDP
при использовании протокола IPv6
Для
обеспечения
работы сервера одновременно
для трафика IPv4 и IPv6 необходимо запустить
два отдельных процесса одной серверной
программы. Для этого в файл inetd.conf
следует добавить две отдельные строки,
одну для tcp4,
вторую
для tcp6.
Поведение
inetd
при использовании различных сочетаний
параметров настройки сервера IPv4/v6:
Условия
|
Трафик
IPv4
|
Трафик
IPv6
|
Только
один сервер tcp4
|
Направляется
на
сервер
|
Не
принимается
|
Два
сервера: tcp4
и tcp6
|
Направляется
на
сервер tcp4
|
Направляется
на
сервер tcp6
|
Только
один сервер tcp6
|
В
определенных конфигурациях возможна
маршрутизация на сервер tcp6
(для получения дополнительной информации см.
страницу протокола IPv6).
|
Направляется
на
сервер tcp6.
|
Примеры:
Пример
из
рабочего файла inetd.conf:
ftp
stream tcp nowait root /usr/sbin/ftpd in.ftpd -el
где:
ftp
Это
имя_службы
(см. /etc/services).
stream
Это
тип_сокета.
tcp
Это
протокол.
nowait
Запись
wait/nowait.
root
Это
пользователь.
/usr/sbin/ftpd
Это
серверная_программа.
in.ftpd
Это
argv[0]
(аргументы_серверной_программы).
-el
Это
argv[1]
(аргументы_серверной_программы).