Le programme portreserve vise à aider les services avec des ports bien connus qui se trouvent dans la gamme portmap. Il empêche portmap d'accéder au port d'un service réel en l'occupant lui-même, jusqu'à ce que le service réel lui dise de libérer le port (généralement dans le script d'initialisation).
Par exemple, le package cups fournit /etc/portreserve/cups .
# cat /etc/portreserve/cups ipp
Dans /etc/services , il est défini "service-name ipp ” est égal à 631 ports. Lorsque le service portreserve démarre, portreserve réserve 631 ports.
# cat /etc/services | grep -w ipp ipp 631/tcp # Internet Printing Protocol ipp 631/udp # Internet Printing Protocol
# netstat -lanp | grep 631 udp 0 0 0.0.0.0:631 0.0.0.0:* 1628/portreserve
Fichiers de configuration
– /etc/portreserve/* – Fichiers de configuration des services
– /var/run/portreserve/socket – prise de communication pour la libération du port
Que se passe-t-il lorsque le démon portrelease démarre
Lorsque le démon portreserve est démarré, il examine le fichier /etc/portreserve/ annuaire. Chaque fichier ne contenant pas ". " ou " ~ ” dans son nom est considéré comme un fichier de configuration de service et doit contenir un nom de service (comme indiqué dans /etc/services ) ou un numéro de port. Les services UDP peuvent être spécifiés en ajoutant "/udp " au nom du service, et les services TCP par " /tcp “. Plusieurs services peuvent être spécifiés, un par ligne.
Par exemple, /etc/portreserve/cups peut contenir la chaîne "ipp " ou, de manière équivalente, " ipp/tcp ” et “ipp/udp ” sur des lignes séparées.
Pour chaque fichier de configuration de service, un socket est créé et lié au port approprié. Un service souhaitant se lier à son port doit d'abord exécuter portrelease, qui demande à portreserve de libérer le port associé au service.
Une fois que tous les ports réservés ont été libérés, le démon se ferme.