Xinetd
Xinetd e` un sostituto di inetd. Visto che di default in Debian inetd non viene nemmeno piu` installato, ho pensato di provare (dato che ne avevo bisogno) xinetd, e l'ho trovato molto interessante e versatile. Il suo difetto principale e` che e` assai scarso di documentazione. Il man di xinetd.conf descrive tutti i parametri, ma non modo molto conciso e senza esempi. Per fortuna quando non funziona qualcosa nel syslog ci sono sufficienti informazioni (di solito) per capire cosa c'e` che non va.
Qui raccogliero` un po` di esempi di configurazioni fatte da me per le cose che mi sono servite.
Le configurazioni possono essere fatte indistintamente in /etc/xinetd.conf oppure dentro a dei files (con qualsiasi nome) in /etc/xinetd.d. Alcune configurazioni possono essere impostate come default, ed eventualmente modificate poi nella configurazione specifica di un servizio, mentre altre hanno senso solo dentro ad un servizio.
I servizi (le porte) possono essere descritti dentro /etc/services o anche no, nel secondo caso dovremo ovviamente indicare una porta per il servizio, mentre nel primo non ha senso in quanto e` definita appunto in services.
Esempio di un servizio definito in /etc/services che lancia uno script:
service igswork { socket_type = stream protocol = tcp wait = no instances = 100 log_type = SYSLOG daemon user = ig2script server = /opt/IG2/igs/server.pl }
Esempio di un servizio non definito in /etc/services che rimanda la connessione a una macchina remota (in pratica in locale non fa nulla, rimbalza solo il traffico a una macchina remota). Notare che occorre comunque mettere un utente valido, anche se non ho capito perche`, visto che tanto fa una connessione remota senza lanciare alcun processo locale. Senza pero` non funziona.
service checkmd5 { type = UNLISTED protocol = tcp wait = no user = ig2script port = 9998 redirect = 10.20.0.200 9998 }
Configurazione generale (in /etc/xinetd.conf) per il logging:
defaults { log_type = SYSLOG daemon info log_on_success = PID HOST EXIT DURATION log_on_failure = HOST }