Традиционно inetd
был основным суперсервером, использовавшимся в системе Linux. Однако в 2000 г. наметилась тенденция перехода к альтернативному суперсерверу xinetd
. Условно xinetd
можно представить себе как сочетание inetd
и TCP Wrappers. Но между этими программами существуют некоторые отличия. Не все возможности xinetd
можно реализовать с помощью inetd
и TCP Wrappers, но ряд действий, которые можно выполнить, используя inetd
и TCP Wrappers, нельзя сделать посредством xinetd
. При необходимости xinetd
можно использовать совместно с TCP Wrappers, поэтому считается, что данный инструмент обеспечивает большую степень гибкости по сравнению с inetd
. В начале 2002 г. xinetd
был использован в Red Hat и Mandrake в качестве суперсервера по умолчанию; ожидается также переход других операционных систем на xinetd
.
Формат файла /etc/xinetd.conf
Поскольку возможности нового суперсервера расширены по сравнению с inetd
, формат конфигурационного файла также отличается от inetd
. Настройка xinetd
производится с помощью файла /etc/xinetd.conf
. Следует заметить, что файл xinetd.conf
, поставляемый в составе дистрибутивных пакетов Red Hat и Mandrake, содержит лишь минимальный набор установок. В нем задана конфигурация серверов, а также содержится строка, которая указывает суперсерверу прочитать все файлы в каталоге /etc/xinetd.d
и интерпретировать их как дополнительные конфигурационные файлы. Конфигурация xinetd
напоминает конфигурацию SysV; каждому серверу соответствует собственный управляющий файл, названный по имени сервера. Например, для сервера Telnet используется файл /etc/xinetd.d/telnet
. При необходимости xinetd
можно настроить так, что этот суперсервер будет использовать лишь основной файл xinetd.conf
, но в дистрибутивных пакетах Red Hat и Mandrake некоторые файлы запуска уже содержатся в каталоге /etc/xinetd.d
.
Независимо от того, содержится ли описание сервера в /etc/xinetd.conf
или в файле, находящемся в каталоге /etc/xinetd.d
, оно может занимать несколько строк. Базовое определение включает те же данные, что и запись в файле inetd.conf
. Например, приведенное ниже описание почти эквивалентно рассмотренной ранее записи для Telnet-сервера, находящейся в файле inetd.conf
.
service telnet
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/in.telnetd
}
В конфигурационном файле xinetd
каждое поле именуется. Несмотря на то что в данном примере поля расположены в том же порядке, что и в рассмотренной ранее записи inetd
, порядок их следования может быть произвольным. Как нетрудно заметить, в данном примере не вызывается TCP Wrappers, однако при необходимости этот инструмент можно использовать (для того, чтобы Telnet-сервер запускался через TCP Wrappers, надо задать значение /usr/bin/tcpd
поля server
и добавить поле server_args
, присвоив ему значение /usr/sbin/in.telnetd
).
В дополнение к стандартным средствам inetd xinetd
предоставляет новые опции, расширяющие возможности суперсервера. Большинство из этих опций включаются в описание сервера и помещаются в фигурные скобки. Наиболее важные опции описаны ниже.
• Средства защиты. Как упоминалось ранее, xinetd
поддерживает большое количество опций, предназначенных для повышения безопасности системы. Средства, соответствующие многим из этих опций, эквивалентны средствам, предоставляемым TCP Wrappers. Опции защиты подробно будут рассматриваться в следующем разделе.
• Запрет вызова сервера. Для того чтобы запретить вызов сервера, управляемого суперсервером inetd
, надо закомментировать соответствующую строку в конфигурационном файле. В программе xinetd
для этой цели используется опция disable = yes
, которая помещается в описание требуемого сервера. Тот же результат можно получить, включив в раздел defaults
основного файла /etc/xinetd.conf
опцию disables = список_серверов
, где список серверов состоит из имен серверов, разделенных пробелами. Различные инструментальные средства настройки используют оба способа. Если в описании сервера присутствует опция disable = no
, это значит, что сервер активен.
• Перенаправление. Если вам необходимо передать запрос на другой компьютер, вы можете сделать это с помощью опции redirect = целевой_компьютер
, где целевой компьютер (т.е, компьютер, которому должен быть передан запрос) задается с помощью доменного имени или IP-адреса. Например, если вы включите в описание сервера, содержащееся в файле /etc/xinetd.d/telnet
на узле dummy.threeroomco.com
, опцию redirect = 192.168.3.78
, то при попытке обращения к Telnet-серверу на компьютере dummy.threeroomco.com
запрос будет перенаправлен на 192.168.3.78. Эту возможность использует NAT-маршрутизатор для того, чтобы организовать обслуживание внешних запросов компьютером, принадлежащим внутренней сети. Тот же результат достигается с помощью iptables
, но применяя для этой цели xinetd
, вы можете использовать средства управления доступом суперсервера.
Читать дальше