portreserve プログラムは、portmap の範囲内にある既知のポートを持つサービスを支援することを目的としています。実際のサービスがポートを解放するように指示するまで (通常は init スクリプトで)、portmap が実際のサービスのポート自体を占有することを防ぎます。
たとえば、cups パッケージは /etc/portreserve/cups を提供します .
# cat /etc/portreserve/cups ipp
/etc/services 内 、「サービス名 ipp」と定義されています 」は 631 に等しい ポート。 portreserve サービスが開始されると、portreserve は 631 個のポートを予約します。
# 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
構成ファイル
– /etc/portreserve/* – サービス構成ファイル
– /var/run/portreserve/socket – ポートリリース用の通信ソケット
portrelease デーモンが起動するとどうなるか
portreserve デーモンが開始されると、/etc/portreserve/ ディレクトリ。 「.」を含まない各ファイル 」または「~」 」という名前は、サービス構成ファイルと見なされ、サービス名を含める必要があります (/etc/services にリストされているように) ) またはポート番号。 UDP サービスは、「/udp」を追加して指定できます 」をサービス名に、TCP サービスは「/tcp」 」。複数のサービスを 1 行に 1 つずつ指定できます。
例:/etc/portreserve/cups 文字列「ipp」が含まれている可能性があります 」または同等の「ipp/tcp」 」および「ipp/udp」
サービス構成ファイルごとにソケットが作成され、適切なポートにバインドされます。そのポートにバインドしたいサービスは、最初に portrelease を実行する必要があります。これは、サービスに関連付けられたポートを解放するように portreserve に指示します。
すべての予約済みポートが解放されると、デーモンは終了します。