Il programma portreserve mira ad aiutare i servizi con porte note che si trovano nell'intervallo di portmap. Impedisce la portmap dalla porta di un servizio reale occupandola a sua volta, finché il servizio reale non gli dice di rilasciare la porta (generalmente nello script init).
Ad esempio, il pacchetto cups fornisce /etc/portreserve/cups .
# cat /etc/portreserve/cups ipp
In /etc/services , è definito "nome servizio ipp ” è uguale a 631 porti. All'avvio del servizio portreserve, portreserve riserva 631 porte.
# 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
File di configurazione
– /etc/portreserve/* – File di configurazione del servizio
– /var/run/portreserve/socket – presa di comunicazione per portrelease
Cosa succede all'avvio del demone portrelease
Quando il demone portreserve viene avviato, esamina /etc/portreserve/ directory. Ogni file che non contiene ". ” o “~ ” nel suo nome è considerato un file di configurazione del servizio e deve contenere un nome del servizio (come elencato in /etc/services ) o un numero di porta. I servizi UDP possono essere specificati aggiungendo “/udp ” al nome del servizio e servizi TCP tramite “/tcp “. È possibile specificare più servizi, uno per riga.
Ad esempio, /etc/portreserve/cups potrebbe contenere la stringa "ipp ” o, equivalentemente, “ipp/tcp " e "ipp/udp ” su righe separate.
Per ogni file di configurazione del servizio, viene creato un socket che viene associato alla porta appropriata. Un servizio che desidera eseguire il binding alla sua porta deve prima eseguire portrelease, che indica a portreserve di rilasciare la porta associata al servizio.
Una volta che tutte le porte riservate sono state rilasciate, il demone esce.