/etc/inetd.conf

Конфигурационный файл суперсервера (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] (аргументы_серверной_программы).