Das Portreserve-Programm zielt darauf ab, Diensten mit bekannten Ports zu helfen, die im Portmap-Bereich liegen. Es verhindert Portmap vom Port eines echten Dienstes, indem es ihn selbst belegt, bis der echte Dienst ihm mitteilt, den Port freizugeben (im Allgemeinen im Init-Skript).
Zum Beispiel stellt das Paket cups /etc/portreserve/cups bereit .
# cat /etc/portreserve/cups ipp
Unter /etc/services , ist es definiert als „Dienstname ipp “ ist gleich 631 Häfen. Wenn der Portreserve-Dienst startet, reserviert Portreserve 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
Konfigurationsdateien
– /etc/portreserve/* – Dienstkonfigurationsdateien
– /var/run/portreserve/socket – Kommunikations-Socket für Portfreigabe
Was passiert, wenn der Portrelease-Daemon gestartet wird
Wenn der Portreserve-Daemon gestartet wird, untersucht er die Datei /etc/portreserve/ Verzeichnis. Jede Datei, die nicht „. enthält “ oder „~ ” in seinem Namen gilt als Dienstkonfigurationsdatei und muss einen Dienstnamen enthalten (wie in /etc/services aufgelistet ) oder eine Portnummer. UDP-Dienste können durch Anhängen von „/udp“ angegeben werden ” zum Dienstnamen und TCP-Dienste durch „/tcp “. Es können mehrere Dienste angegeben werden, einer pro Zeile.
Zum Beispiel /etc/portreserve/cups könnte die Zeichenfolge „ipp enthalten “ oder entsprechend „ipp/tcp “ und „ipp/udp ” in separaten Zeilen.
Für jede Dienstkonfigurationsdatei wird ein Socket erstellt und an den entsprechenden Port gebunden. Ein Dienst, der sich an seinen Port binden möchte, muss zuerst portrelease ausführen, was portreserve anweist, den mit dem Dienst verknüpften Port freizugeben.
Sobald alle reservierten Ports freigegeben wurden, wird der Daemon beendet.