Kodama's home / tips.
/etc/services には IP 接続のポート番号とサービス名の対応が書かれている. この定義/予約されたサービスは RFC で公開されている. 簡潔にまとまった形では IANA が公開している port-numbers リストで知る事ができる.
/etc/services に書かれたサービス名は /etc/inetd.conf(inetd の場合) 等の設定ファイルで使用される. この意味では, 設定ファイルで参照したいポート名だけが /etc/services に書かれていれば十分だ. たまに, 勘違いを見掛けるが, /etc/services はポート番号とポート名の変換表を提供するだけで, inetd サーバの提供サービスを設定するのは /etc/inetd.conf の役割なのだ. サービスを止める場合には /etc/services ではなく /etc/inetd.conf の該当する項目を削除する. 言い替えれば, /etc/services に項目があるだけではサーバは動かない.
また, /etc/services は netstat, tcpdump, iptraf などの表示で ポート番号をポート名に変換する場合にも使われている. /etc/services に項目が無い場合, ポート番号で表示される事になる. tcpdump, iptref 等でネットワークの状況を調査する場合, できるだけ多くのポート名が /etc/services に書かれている事が望ましい.
ポート番号 0-1023 の範囲は Well Known Ports とよばれ, IANA が定義/管理している. ポート番号 1024-49151 の範囲は Registered Ports とよばれ, 個々に予約されたものを IANA がリスト化している. ここまでの 0-49151 の範囲は, サーバが要求をまちうけるためのポートとして予約されている. ポート番号 49152-65535 は Dynamic Ports とか Private Ports とよばれ, TCP の接続(主にクライアント側)のために一時的に使われる.
port-numbers から /etc/services への書き換え. 余分なものをコメント化しているだけなので, 手作業で切り出しても同じ事だが...
cat port-numbers|tr -d '\r'|gawk '($2~/^[0-9][-0-9]*\/(tcp|udp)$/){print$0;next}{print "# "$0}'
Kodama's home / tips.