FreeBSD Handbook/Redes/Servidores/inetd
29.2 O "Super-Servidor" inetd
[editar | editar código-fonte]Contribuição de Chern Lee. Atualizado por The FreeBSD Documentation Project.
29.2.1 Visão Geral
[editar | editar código-fonte]O inetd(8) algumas vezes é chamado de "Super-Servidor" pois gerencia conexões para diversos serviços. Quando uma conexão é atendida pelo inetd ele determina para que programa a conexão se destina, lança o processo específico e delega o socket ao mesmo (o programa é chamado com o socket do serviço como descritor de sua entrada padrão, saída padrão e saída de erro. Executar o inetd para serviços menos utilizados pode reduzir a carga total do sistema, comparando-se a executar cada serviço individualmente.
Primariamente, o inetd é usado para executar outros serviços, mas diversos protocolos simples são tratados diretamente, como chargen, auth e daytime.
Esta seção vai abordar as configurações básicas do inetd através de seus parâmetros de linha de comando e seu arquivo de configuração /etc/inetd.conf.
29.2.2 Configurações
[editar | editar código-fonte]O inetd é inicializado através do sistema rc(8). A opção inetd_enable é ajustada para "NO", por padrão, mas é muitas vezes ativada pelo sysinstall, dependendo da configuração escolhida pelo usuário. Colocando:
inetd_enable="YES"
ou
inetd_enable="NO"
no /etc/inetd.conf vai ativar ou desativar a execução do inetd na inicialização do sistema. O comando:
# /etc/rc.d/inetd rcvar
pode ser executado para verificar a configuração atual.
Adicionalmente, parâmetros de linha de comando podem ser passados para o inetd através da opção inetd_flags.
29.2.3 Opções de Linha de Comando
[editar | editar código-fonte]Como a maioria dos daemons, o inetd possui várias opções que podem modificar seu comportamento. A lista completa é a seguinte:
inetd [-d] [-l] [-w] [-W] [-c maximum] [-C rate] [-a address | hostname] [-p filename] [-R rate] [-s maximum] [configuration file]
As opções podem ser passadas ao inetd usando o parâmetro inetd_flags no /etc/inetd.conf. Por padrão o inetd_flags é definido como "-wW -C 60", que liga o encapsulamento TCP e evita que qualquer IP único solicite qualquer serviço mais do que 60 vezes em um minuto qualquer.
Embora mencionemos opção de taxa limite a seguir, os usuários mais novos podem notar que esses parâmetros normalmente não precisam ser modificados. Essas opções podem ser úteis caso você descubra que está recebendo um número excessivo de conexões. A lista completa de opções pode ser encontrada no manual do inetd(8).
- -c máximo
- Especifica o número máximo padrão de invocações simultâneas de cada serviço. O padrão é ilimitado. Pode ser definido para cada serviço com o parâmetro max-child.
- -C taxa
- Especifica o número máximo de vezes que um serviço pode ser chamado de um mesmo IP num mesmo minuto. O padrão é ilimitado. Pode ser definido para cada serviço com o parâmetro max-connections-per-ip-per-minute.
- -R taxa
- Especifica o número de vezes que um serviço pode ser chamado por minuto. O padrão é 256. Uma taxa igual a 0 permite um número ilimitado de requisições.
- -s máximo
- Especifica o número máximo de vezes que um serviço pode ser requisitado simultaneamente a partir de um IP único. O valor padrão é ilimitado. Pode ser definido separadamente para cada serviço com o uso do parâmetro max-child-per-ip.
29.2.4 inetd.conf
[editar | editar código-fonte]A configuração do inetd é feita no arquivo /etc/inetd.conf.
Quando uma modificação é feita no /etc/inetd.conf, o inetd pode reler sua configuração através do comando:
Exemplo 29.1- Recarregando o arquivo de configuração do inetd
[editar | editar código-fonte]# /etc/rc.d/inetd reload
Cada linha do arquivo de configuração especifica um serviço único. Os comentários no arquivo iniciam com um "#". O formato de cada entrada no /etc/inetd.conf é como mostrado a seguir:
nome-do-serviço tipo-de-socket protocolo {wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]] usuário[:grupo][/classe-de-login] programa-servidor argumentos-do-programa-servidor
Uma linha de exemplo para o ftpd(8) usando IPv4 poderia ser assim:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
- nome-do-serviço
- Este é o nome do serviço em questão. Ele precisa corresponder ao serviço listado no /etc/services. Isto determina qual porta o inetd precisa escutar. Se um novo serviço está sendo criado, ele precisa primeiramente ser colocado no /etc/services.
- tipo-de-socket
- Pode ser stream, dgram, raw, ou seqpacket. stream precisa ser usado para daemons TCP baseados em conexão, enquanto dgram é usado para daemons usando o protocolo de transporte UDP.