Program portreserve má za cíl pomoci službám se známými porty, které leží v rozsahu portmap. Zabraňuje portmap z portu skutečné služby tím, že jej sám zabírá, dokud jí skutečná služba neřekne, aby port uvolnila (obvykle ve skriptu init).
Například balíček cups poskytuje /etc/portreserve/cups .
# cat /etc/portreserve/cups ipp
V /etc/services , je definována jako „název služby ipp ” se rovná 631 porty. Když se služba portreserve spustí, rezervuje portreserve 631 portů.
# 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
Konfigurační soubory
– /etc/portreserve/* – Konfigurační soubory služby
– /var/run/portreserve/socket – komunikační zásuvka pro portrelease
Co se stane, když se spustí démon portrelease
Když je démon portreserve spuštěn, prozkoumá /etc/portreserve/ adresář. Každý soubor, který neobsahuje „. “ nebo „~ ” ve svém názvu je považován za konfigurační soubor služby a musí obsahovat název služby (jak je uvedeno v /etc/services ) nebo číslo portu. Služby UDP lze specifikovat připojením „/udp ” na název služby a služby TCP pomocí „/tcp “. Může být specifikováno několik služeb, jedna na řádek.
Například /etc/portreserve/cups může obsahovat řetězec „ipp “ nebo ekvivalentně „ipp/tcp “ a „ipp/udp ” na samostatných řádcích.
Pro každý konfigurační soubor služby je vytvořen soket a připojen k příslušnému portu. Služba, která se chce vázat na svůj port, musí nejprve spustit portrelease, který dá portreserve pokyn, aby uvolnil port spojený se službou.
Jakmile budou všechny rezervované porty uvolněny, démon se ukončí.