Чтение онлайн

ЖАНРЫ

Linux-сервер своими руками

Колисниченко Денис Николаевич

Шрифт:

Примечание. RPC (Remote Procedure Call) — вызов удаленной процедуры. Используется в серверной части приложения. Механизм RPC скрывает от программиста детали сетевых протоколов нижележащих уровней.

Вам необязательно указывать все эти атрибуты для каждого сервиса. Можно указать только необходимые:

1. socket_type

2. user

3. server

4. wait

Параметр protocol указывается только для RFC-сервисов, а также для всех сервисов, которые не описаны в /etc/services. Параметр rpc_version — только для rpc-сервисов. Параметр rpc_nuinber указывается только для RFC-сервисов, которые не указаны в файле /etc/rpc. Параметр port задается только для He-RPC-сервисов,

которые не описаны в /etc/services. Следующие атрибуты поддерживают все операторы присваивания:

1. only_from

2. no_access

3. log_on_success

4. log_on_failure

5. passenv

6. env (не поддерживает оператор «-=»)

Эти атрибуты также могут принимать разные значения в разных секциях описания сервиса.

Файл конфигурации может содержать секцию default, в которой описаны атрибуты по умолчанию. Они будут одинаковы для всех сервисов. Возможные атрибуты по умолчанию:

1. log_type

2. log_on_success

3. log_on_failure

4. only_from

5. no_access

6. passenv

7. instances

8. disabled

9. enabled

8.1.6. Параметры запуска xinetd

Я надеюсь, что с настройкой более-менее все понятно. Если же мои надежды не оправдались, то в разделе 8.1.7 вы найдете пример файла /etc/xinetd.conf. Сейчас же займемся запуском только что откомпилированного и настроенного суперсервера. А запускать его можно с параметрами, указанными в табл. 8.3.

Параметры запуска xinetd Таблица 8.3

Параметр Описание
– f файл Устанавливает альтернативный файл конфигурации, который должен использоваться вместо стандартного файла /etc/xinetd.conf
– pidfile рid_файл Файл с ID-процесса
– stayalive Даже если ни один сервис не прописан, демон должен выполняться («остаться в живых»)
– loop число Задает количество коннектов в секунду
– d Режим отладки (debug mode)
– reuse Перед тем как связать сокет сервиса с IP-адресом, суперсервер установит опцию сокета SO_REUSEADDR
– limit число Ограничение на количество одновременно запущенных процессов

В табл. 8.3 я привел описание не всех параметров запуска, выбрав лишь самые нужные. Более подробную информацию вы сможете получить в документации по xinetd. Так же как и inetd, xinetd можно контролировать с помощью сигналов (см. табл. 8.4).

Сигналы суперсервера Таблица 8.4

Сигнал Описание
SIGUSR1 Суперсервер перечитает файл конфигурации
SIGQUIT Остановит xinetd
SIGTERM Перед остановкой xinetd все процессы будут остановлены

8.1.7. Пример файла конфигурации /etc/xinetd

Теперь, как и обещал, привожу пример файла конфигурации (см. листинг 8.5). В этом листинге перечислены наиболее часто используемые сервисы с оптимальными параметрами (атрибутами). Конечно же, вам предстоит решить: какие сервисы вы будете использовать, а какие нет. Возможно, вы также измените и их атрибуты, например, время работы сервиса.

Листинг 8.5.
Фрагмент файла конфигурации /etc/xinetd

# Параметры по умолчанию для всех возможных сервисов

defaults

{

# Число серверов, которые могут быть активны одновременно для сервиса.

 instances = 25

# Параметры протоколирования

 log_type = FILE /var/log/servicelog

 log_on_success = HOST PID

 log_on_failure = HOST RECORD

 only_from = 111.11.111.0 111.111.112.0

 only_from = localhost 192.168.1.0/32

 disabled = tftp

}

service login

{

 flags = REUSE

 socket_type = stream

 protocol = tcp

 wait = no

 user = root

 server = /usr/etc/in.rlogind

 log_type = SYSLOG Iocal4 info

}

# Сервис telnet — эмуляция терминала удаленных систем

# (для 127.0.0.1)

service telnet

{

 flags = REUSE

 socket_type = stream

 wait = no

 user = root

 server = /usr/etc/in.telnetd

 bind = 127.0.0.1

 logon failure += USERID

}

# Сервис telnet — эмуляция терминала удаленных систем

service telnet

{

 flags = REUSE

 disabled = yes

 socket_type = stream

 wait = no

 user = root

# server = /usr/etc/in.telnetd

 bind = 192.231.139.175

 redirect = 128.138.202.20 23

 log_on_failure += USERID

}

service ftp

{

 socket_type = stream

 wait = no

 user = root

 server = /usr/etc/in.ftpd

 server_args = –1

 instances = 4

 log_on_success += DURATION USERID

 logon failure += USERID

# Время работы сервиса

 access_times = 2:00-8:59 12:00-23:59

# приоритет

 nice = 10

}

service name

{

 socket_type = dgram

 wait = yes

 user = root

Поделиться с друзьями: