とあるLinuxサーバのプロセスを確認したところ portreserve というプロセスが 631 ポートを開いていました。 portreserve は今まで聞いたことのないサービス名だったので調査したところ「ポートを予約するためのサービス」であるとのこと。
CentOS7 でもパッケージが存在していたので、インストールしてみて man で確認したところ
/etc/portreserve/<ファイル名>
サービス名称( /etc/services に記載されている名前に限る )
を設定すれば、予約ができるとありました。
実験として、telnet のポートを予約する場合は、
/etc/portreserve/telnet
telnet
と記載して portreserve を再起動すれば portreserve が 23番ポートを bind しました。
nc コマンドで LISTEN しようとしてもエラーになります。
# nc -l 0.0.0.0 23 Ncat: bind to 0.0.0.0:23: Address already in use. QUITTING.
次に、このポートを解放する場合は、以下のように Datagram の UNIX-Domainソケットで /var/run/portreserve/socket に接続し、サービス名を送信します。
# echo -n "telnet" | nc -u -U /var/run/portreserve/socket
これで telnet で使用する 23番ポート は解放されるので、nc コマンドで LISTEN できるようになります。
# nc -l 0.0.0.0 23
以上が portreserve の使い方らしいのですが、使う場面が全くわかりませんでした。