Program portreserve bertujuan untuk membantu layanan dengan port terkenal yang terletak di kisaran portmap. Ini mencegah portmap dari port layanan nyata dengan menempatinya sendiri, hingga layanan sebenarnya memerintahkannya untuk melepaskan port (umumnya dalam skrip init).
Misalnya paket cangkir menyediakan /etc/portreserve/cups .
# cat /etc/portreserve/cups ipp
Di /etc/services , itu didefinisikan “service-name ipp ” sama dengan 631 pelabuhan. Saat layanan portreserve dimulai, portreserve mencadangkan 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
File Konfigurasi
– /etc/portreserve/* – File konfigurasi layanan
– /var/run/portreserve/socket – soket komunikasi untuk portrelease
Apa yang terjadi ketika daemon portrelease dimulai
Ketika daemon portreserve dimulai, ia memeriksa /etc/portreserve/ direktori. Setiap file tidak berisi “. ” atau “~ ” dalam namanya dianggap sebagai file konfigurasi layanan, dan harus berisi nama layanan (seperti yang tercantum dalam /etc/services ) atau nomor port. Layanan UDP dapat ditentukan dengan menambahkan “/udp ” ke nama layanan, dan layanan TCP dengan “/tcp “. Beberapa layanan dapat ditentukan, satu per baris.
Misalnya, /etc/portreserve/cups mungkin berisi string “ipp ” atau, secara setara, “ipp/tcp ” dan “ipp/udp ” pada baris terpisah.
Untuk setiap file konfigurasi layanan, soket dibuat dan diikat ke port yang sesuai. Layanan yang ingin mengikat ke portnya harus terlebih dahulu menjalankan portrelease, yang menginstruksikan portreserve untuk melepaskan port yang terkait dengan layanan.
Setelah semua port yang dicadangkan telah dilepaskan, daemon akan keluar.