Inet, Le SuperServeur
Un article de Diablotins.org.
|
Sommaire |
Synopsis
Vous disposez d'un serveur qui assure divers services sur le réseau, mais peu sollicités.Aussi, pour économiser des ressources, vous voudriez que ces services démarrent à la demande d'un client et s'arrêtent lorsque plus aucun client n'est actif.
C'est le rôle d'«Inet».Ce dernier surveille certaines plages de ports IP puis démarre et arrête les services associés selon l'activité sur ces ports.
Configuration
Activer le super serveur
Ajoutez simplement l'entrée «inetd_enable="YES"» dans /etc/rc.conf pour lancer le «super serveur».
Évitez de redémarrer la machine en entrant:
/etc/rc.d/inetd start
Le serveur requiert deux fichiers principaux, «/etc/inetd.conf» pour sa configuration et «/etc/services» qui associe un port IP à un service réseau.
Autoriser/Interdire un service
Déterminez quel est le nom du service à autoriser en parcourant le fichier «/etc/inetd.conf» et commentez ou non l'entrée du service.
La structure de ce fichier est la suivante:
Service type protocole comportement utilisateur commande arguments
- Type:
- stream (TCP*)
- dgram (UDP*),
- raw (ICMP)
- rdm (messages)
- Protocole :
- TCP/TCP6/TCP46;
- UDP/UDP6/UDP46;
- RPC/TCP; RPC/UPD
- Comportement de inetd par rapport au service:
- wait/nowait: Attendre ou pas que le service soit démarré avant d'écouter le traffic.
- max-child/max-connections-per-ip-per-minute/max-child-per-ip : limites de connexions.
- Utilisateur
- :Groupe
- /classe.
Un classique:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l ftp stream tcp6 nowait root /usr/libexec/ftpd ftpd -l
Exemple
Inetd lance un processus et redirige ses entrées et sorties standards. Ce processus peut très bien être un script shell, un script perl ou autre. À partir de là , voici un petit exemple de serveur avec un script shell:
# ee /opt/bofh.sh
#!/bin/sh echo "=== Un exemple de serveur BOFH" echo "=== Feel the Power!" echo "Your excuse is: Too many interrupts"
Le script doit être exécutable:
# chmod +x /opt/bofh.sh
Associez le au service «mdqs» (port 666/tcp) dans inetd.conf. Le script sera appelé par l'utilisateur «nobody»:
# ee /etc/inetd.conf mdqs stream tcp nowait nobody /opt/bofh.sh bofh.sh
Relançez inetd, soit en lui envoyant un signal SIGHUP, soit en entrant: /etc/rc.d/inetd restart Essayez:
$ telnet -4 localhost 666 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. === Un exemple de serveur BOFH === Feel the Power! Your excuse is: Too many interrupts Connection closed by foreign host.
Etonnant, non ?
